Here's some IE6 related tips though...
1) margin: 0 auto doesn't work in IE6, so centered designs in this fashion won't work. I typically have a two-div-container setup, that is to say 1 div is 100%, and then the div within is the fix width with margin: 0 auto; set. If you set "text-align: center" to the body tag you can then center the layout (But remember to set it back to left within one of the containers or to whatever alignment you want by default).
2) Use CSS reset libraries, or make your own simple one, something like html * { margin: 0px; padding: 0px; outline: 0px; ... } and so on, Yahoo makes a decent pre-packaged css reset. This will help address the subtle browser-based defaults that get loaded for undefined properties.
3) If you use floats, clear them, this is true of nearly all browsers (though some automatically seem to clear), this is to say if you got two divs and one is floated right, make sure to have something like <br style="clear: right;"/> shortly there after (or clear with the next div), this will help with a lot of layout changes.
4) Avoid tables for site layouts, they're not nearly as fluid to work with and every browser has it's own way it thinks tables should be formated or padded.
5) Use xhtml transitional or strict, and add on the <?xml version="1.0" encoding="UTF-8"?> at top (if php, make sure to use echo to output the line to the browser), xhtml doctypes are much stricter than traditional html, and you have a much higher chance of getting rendering to fall in line with all the browsers that way including IE (the xml line in a way puts IE7 and lower into quirks mode).
6) If you use paddings, keep in mind that in IE6, paddings do not force a box object larger or taller like it does in modern browers. In those cases you may have to use margin for IE6. You can sometimes accomplish this using IE conditional statements. Normally something like this in the <head> ... </head> area.
Code:
<!--[if IE 6]>
<style type="text/css">
Place the CSS codes here that pertain to IE6, if this statement is placed after all the CSS then it will override the defaults when IE6 is loading the page.
</style>
<![endif]-->
Though I generally prefer not to use conditionals and hacks (they generally work, but at the same time they can cause a page to become 'invalid' when validated against w3c standards).
7) Try to avoid using transparent PNG for your layouts and such if you must have IE6 compatibility. And even though its uglier, a transparent gif will work fine. There are some hacks (javascript as with as htc behavior files) that will in a way fix the png transparency issue, but they have their draw backs, such as some don't allow multiple layers on top of another to work in that fashion, or if you have a div with a transparent png background, then you can't use absolute nor relative defined positions or nothing inside the div will be clickable (ie: forms).
8) IF something is broken in IE8, but not in 6 or 7, and it's something you really don't have control over such as a javascript library and such you can't change, you can simply add this line in the head area to make the browser default to compatibility mode (meaning renders the page as if it were IE7). Least its a good quick fix until most of the popular javascript/css tools get updated to recognize IE8 as being different from IE7/6.
Code:
<meta http-equiv="X-UA-Compatible" content="IE=7" />
Usually has to be the first meta tag on the list. However it's generally better to send that header to the browser server side with PHP's header() or similar, so that the browser knows how to render it before it starts loading content.
Thats what I can think of off the top of my head.