Nobody likes to do browser testing. Nobody wants to do it. It’s like cleaning your room. You keep hoping that if you put it off long enough it will go away. So the first thing to understand is that browser testing MUST be done. Suck it up.
That said, there are things you can do to minimize the amount of browser testing you have to do. If you understand the kinds of things different browsers tend to do differently, you can build your HTML and CSS accordingly. For example, if you float something to the right but do not give it a width, IE6 will probably mess it up. If you know that ahead of time, you can put widths in your floated containers when you build it and save yourself some headaches later on.
Of course, eventually you’re going to have to just do it. When you get there, I think it’s best to take a “shortest route possible” attitude. Do the simplest thing possible to make it work. Don’t rethink your whole HTML structure unless you absolutely have to. This means you may do some things that are less than perfect, but when it comes to browser testing all that really matters is that it looks good on the front end. Whatever the quickest way is, just do that.
If you were the kind of kid who didn’t need to be told to clean up your room, maybe you’re the kind of developer who browser tests as soon as possible, and repeatedly. The sooner your get the browser testing over with, the better. But also, you will probably keep tweaking the design until the site goes live. It’s not a bad idea to do multiple waves of browser testing.
Stylesheets. This isn’t Highlander, there can be more than one. Include your “core” stylesheet first. This is where the majority of your CSS goes. The website should pass browser testing almost entirely with just this “core” stylesheet. Only create other stylesheets to fix small things, and include them after your “core” stylesheet. Name them something clear, like styleIE7.css. It’s up to you how you include them. I am fond of using a PHP function to determine browser info, and then spitting out an HTML link tag for the appropriate stylesheet. Like I said, try to fix as much as you can in the “core” stylesheet and keep your browser specific stylesheets to a minimum. I have stylesheets for IE7 that have only two definitions. Clean and simple.
I want to take this opportunity to ask you to comment /* the crap out of */ your stylesheets. Organize them, so that all of the #header stuff is together with a comment explaining that this is header stuff; all of the #nav stuff is together with a comment denoting the start of navigation stuff; all of the #footer stuff is together; and so on. Keep it neat and tidy. Ship shape. This makes it easy for you (and your team mates) to find things. It’s less confusing when trying to debug an issue. The only thing worse than browser testing is browser testing someone else’s design, so when you’re building your stylesheets remember that someone ELSE may have to browser test it.
Lastly, decide, with your team, what browsers you are going to support. This should be agreed upon and known. Consult some browser usage statistics when making this decision.