Я понимаю, что это старый вопрос, но это был первый результат в Google, когда я искал, и я думаю, что нашел лучшее решение, чем предложение с наивысшим рейтингом и то, что ОП решил сделать.
#nav li ul:not(.stupidIE) { color:red }
Так что технически это противоположно тому, что хотел OP, но это просто означает, что вы должны сначала применить правило, которое вы хотите для IE8, а затем применить это для всего остального. Конечно, вы можете поместить что-либо в (), если это действительный CSS, который ничего не выбирает. IE8 душит эту строку и не применяет ее, но предыдущие IE (хорошо, я только проверил IE7, я перестал заботиться о IE6), просто проигнорируйте: not () и примените объявления. И, конечно, любой другой браузер (я тестировал Safari 5, Opera 10.5, Firefox 3.6) применяет этот CSS, как и следовало ожидать.
Так что это решение, я думаю, как и любое другое решение на чистом CSS, предполагает, что если разработчики IE добавят поддержку селектора: not, тогда они также исправят все несоответствия, которые заставляли вас ориентироваться на IE8.