The problem, as always, is you are using IE as your reference when you laid out this site and use IE as your reference as to how things should work. However, all versions of IE are 10 years behind web standards and buggy so when you hold IE up as your reference, you are using an old, buggy non-standard browser to test your markup.
So what happens to your markup? You create old, buggy non-standard markup and expect it to work in modern browsers. So don't do that anymore. Always, always use Firefox or Opera or Safari as your initial test for how things should work and to make sure your markup is correct. Then we know it will probably work fine in all browsers except, perhaps, IE, but at least you know it's not you or your markup.
So...
On your first line you are properly using the xml declaration for an xhtml page. (<?xml version="1.0"?>) However, IE chokes on modern things and goes into quirks mode and won't work like any other browser that does understand that. No version of IE even works with XHTML but that's another story.
So you can safely remove the xml declaration, but then you have to validate your html which, right now, has 32 errors. Then validate your css which appears OK right now.
Then see how your page is working in Firefox, make any necessary corrections. Then check in crappy IE to see if it screws everything up. Whatever bugs you discover are known, as are the hacks to fix it.
But let's get that far first.