Note: For the sake of discussion, I'm limiting myself here to equal temperaments, which is the most common way of tuning keyboards. Other systems exist, of course, but would probably only confuse the matter.
Why do B and C and E and F not have a sharp note between them?
Simply because, acoustically speaking, there is no room in our current system for another pitch between B and C, or E and F.
The scale was originally conceived of as a 7 note scale, with the notes A, B, C, D, E, F, G. However, these 7 notes are not equally distributed throughout the octave. Most of these pitches are a whole step above the previous one, but there is only a half step between the B and C, and between the E and F.
But sometimes, we want to move around where this half step occurs. For example, if we were playing in the key of G, we want a half step between the F and the G, but not between the E and the F. The solution is to bump up the F's pitch by a half step, which makes it a whole step higher than the E, and just a half step under the G. This "bumped up" higher version of F, we call F♯. A sharp always refers to raising the pitch by a half step, and a flat always refers to lowering the pitch by a half step. This is true regardless of whether the resulting pitch is a white or black key on the keyboard.
From this, you can see that a B♯, for example, is a half step higher than a regular B. But you'll notice there is already a key on the keyboard that sounds a half step higher than B -- we usually call it C, but B♯ is also a perfectly valid name for that note, in the proper context (for example, the key of C♯ would contain a B♯ -- this occurs in Beethoven's Moonlight Sonata). Similarly, the note B can be called a C♭ in the proper context (such as in an A♭ minor chord). Granted, these don't come up very often, because writing in a key that requires them means reading/playing a lot of sharps or flats, which can often be tricky, but they do show up when needed.
Would this make a piano harder to play in some way?
This brings up an interesting question. If you wanted to, you could lay out the keyboard so that it consists of perfectly alternating black and white keys. However, what you would have to do is make F, G, A, and B become new black keys, and make the three black keys in between them become new white keys. This would leave you with 6 black keys and 6 white keys, which would look a bit like this:
[C] [C♯/D♭] [D] [D♯/E♭] [E] [F] [F♯/G♭] [G] [G♯/A♭] [A] [A♯/B♭] [B].
In some ways, this kind of keyboard would actually be a better representation of the "shape" of the musical scale. So why don't we use it? I can think of two reasons.
The first, obviously, is historical reasons. Never underestimate the importance of tradition. As I mentioned earlier, music was originally (and still is) based around a seven note scale, as depicted by the white keys. The earliest tuning systems didn't really permit the use of playing other keys (that's why everything was limited to modes), so it made no sense to treat the black keys as equal. In fact, the keyboard seems to predate the use of sharp and flat notes, although the current arrangement of keys is very old, and has survived the test of time (see: Origin of the asymmetrical keyboard layout of a piano).
The second reason is simply because it is useful to have these gaps -- it provides tactile feedback to help a player orient themselves along the scale. Pretty much the first thing every piano student learns is to locate "C", to the left of the two black keys. If we had a perfectly symmetrical layout (like a guitar fretboard), it might be easier to lose track of where you are in the scale.
Is there anything in music theory, as it stands, that prevents these notes?
As mentioned above, notes like B♯ do already exist, and do get used, but they do not need a separate key on the keyboard, because B and C are already only a half step apart, so a B♯ is effectively the same pitch as C.
If you were to add new keys, you would have to figure out how you wanted them tuned, because in the current system of 12 equally-spaced half steps, there is no room for another note in between B and C, or E and F. This introduces the somewhat esoteric concept of microtonality, and multiple tunings, of which there are an infinite number of possibilities. I'll only mention two obvious choices, for brevity.
You might try tuning these new keys exactly in between the existing two pitches (and keep all the other pitches the same). In this case, you've just added notes that are a quarter step away, but there are no other quarter steps anywhere on the keyboard, so you'd be introducing microtonalism in a very restricted way. Why should quarter steps only exist between those two pairs of notes, instead of between every pair of notes a half step apart? If you do that, you've just recreated 24-tone equal tuning (you aren't the first). This doubles the amount of notes available to you, so what are you going to do with them all? I believe you are correct about the symbol for the B half-sharp, but note that this would not be equivalent to B♯ (which is still equal to C).
Another option is to notice that you've now got 14 notes in each octave, and split the octave into 14 equal parts (moving the pitches of all the existing notes accordingly), unfortunately, such a scale does not do a good job of approximating many consonant intervals, and it would not be very suitable for traditional western music. Experimental musicians have used it though.