normalize.css is a good reset that affects a lot of cross browser issues. http://necolas.github.com/normalize.css/
Twitter Bootstrap is good if you want off-the-shelf components. It is compatible with IE. If you decide to use Bootstrap, its reset is actually adapted from normalize.css (so you wonβt need both)
The HTML5 Boilerplate can also help with some good practices if you are starting from scratch: https://github.com/h5bp/html5-boilerplate
In particular, I would recommend using HTML5BP conditional comments for target versions of IE, for example:
<html class="no-js">
This means that in your CSS you can solve problems with the version of IE using classes:
.lt-ie8 .awesome-component { ... }
Finally, I would recommend AGAINST to use javascript-type policies such as CSS3PIE. In my experience, they just cause more trouble than they are worth, adding unnecessary markup.
Learn a little about graceful deterioration / progressive improvement.
Another answer mentions IE7.js, which I think is fine, although I cannot remember how useful it is. You definitely need to skip the missing JS functions (if you use js), for example Array.indexOf, in IE <= 8. I just found this ECMAScript5 gasket, which looks pretty good: https://github.com/kriskowal/es5-shim
source share