A: 

Ummm at a glance, you have something that is float left and you have a margin left on it?

#foo {
  float: left;
  margin-left: 20px; //20px in all browsers except IE6 where it will be 40px;
  display: inline; //this will fix this issue
}
Colin
No floats on the page.
Candidasa
A: 

There's a lot of possibilities and it's hard to just guess based on the screensnap. However, one big step towards making IE 6 and 7 behave better is to declare the doctype at the top of the document:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;

That's for HTML 4.01, you'd have to update it to match what you're specifically using if it's not HTML (i.e. XHTML). That alone helps with some of the basic problems, but not all of them. If that doesn't do it, Google "IE6 css hacks" and you'll find lots of potential information that may apply to your context.

John Cavan
A: 

Edit: I suggest you fix the errors related to missing/improper end tags:

Error Line 199, Column 194: end tag for element "a" which is not open

Error Line 200, Column 49: end tag for element "p" which is not open

Source: http://validator.w3.org/check?uri=http%3A%2F%2Fdevaswami.com%2F&amp;charset=%28detect+automatically%29&amp;doctype=Inline&amp;group=0

After that's done we can deduce that it's not a markup related issue.

Original answer:

Try applying haslayout to every element and using display:inline on any floated element:

#nav li { display:inline; } /* the selector *must* be floated and have horizontal margins in the direction of the float. */

* { zoom:1; }

For anything that was fixed by the zoom:1, apply a width/height and that will trigger hasLayout.

Though it might be useful if you actually posted some source code.

meder
+2  A: 

You're using an auto-layout table for the navbar, and it has colspans. This confuses IE, which is not very good at working out how big tables need to be when there are colspans. It makes the table wider than you need, which makes your cells wider than expected, which makes the ugly yellow background show through and it doesn't line up.

To fix it, set the style table-layout: fixed; width: 970px; on the table element, and add one <col> element for each column, each with a width: ...px style that tells IE exactly how big to make each column. Then it can't make any mistakes (and also larger fixed table layouts render faster).

To fix it better, drop the layout table and use positioned divs for the nav links. You could then also lose the silly image slicing and have a single GIF for the whole header background with the photo and links positioned over the top of that.

(Also it is worth fixing the validation errors both in the HTML and in the CSS. You are using // as a single-line comment in your stylesheet, but there is no such thing in CSS; you will only confuse the parser into dropping rules.)

bobince