Part of the problem is that IE7 handles float elements and
most CSS elements differently than all other browsers.
Microsoft would rather people only used their browsers and
their css elements, rather than using the standards produced
for all browsers and users.
I had similar problems with some of my pages. I used clear
float to clear the elements that were not needed, and also had
to use several "IE css hacks" that were made to get around IE
problems. Each hack is specific to which IE code is breaking.
I had to search on google A LOT to find pages where
programmers had figured out and posted the hacks. They're not
real C++ programming or anything, just css and sometimes php
I'll see if I can find what I used (they were old sites I've
redesigned so I'll have to search through my old archived
code) later for you, but I suggest you go search on google
some as well. If nothing else, it will teach you more about
the IE CSS problems and how they are being fixed.