The spacer doesn’t work because the boxes above it are floated. Floated boxes are removed from the normal flow and have no height. I don’t really see why div.left is floating anyway. Delete the float:left and they seem to work fine… and the space works, too.
Want to try something interesting? Before you delete float:left, Add clear:both; to the spacer code. (this is the classic HTML float clearing technique.)
And going beyond what we’ve said above, the next thing to say is that there are better ways of spacing things than using empty elements. For example, as ronpat said, remove the float from the heading and give it a bottom margin if you want space below it.