Back in Netscape 4 and IE 4 days, IE provided the best CSS support. With the appearance of Netscape 6, FireFox, Chrome, and Safari that has changed. Now IE, especially versions prior to 7, is the odd man out. But you needn't despair; there is a way to insert IE specific styles that the other browsers ignore, thus making it possible to overcome many of the differences in behaviour.
The technique is through IE conditional statements; a sample is given below.
<!--[if IE]> <style type="text/css"> … </style> <![endif]-->
You can also insert a <link> between the “if” and “endif” markers. It's also possible to limit the effects to certain IE versions with a refinement to the “if”, such as [if lte IE 6], the most likely alternate.
The other browsers see this whole structure as a comment and thus ignore everything between the “if” and “endif” markers.
Sometimes you end up working on a site that has something in the CSS that looks like
width: 100px; /*/width: 110px;*/
That is an old way to fake out imperfect CSS parsers and get imperfect translators to get at least similar behaviour across browsers. Everything is probably badly built and I'd rewrite the HTML; but if you can't get your client to go for a rebuild (easier maintenance in the future), strip out the wierd stuff and use the method above to to patch any gaping holes. Remember, they'll never be pixel-for-pixel the same in different browsers.