Virtual PC (free): http://www.microsoft.com/downloads/details.aspx?FamilyID=04D...
Disk images with IE 6, 7, 8 (free): http://www.microsoft.com/downloads/details.aspx?FamilyId=21E...
I just install all the other browsers (FF and Safari mainly) and do those manually.
Though there are a couple minor bugs, it works fantastically for testing IE6, 7, and 8 without jumping through hoops.
Combine IETester with Safari for Windows, Firefox 3 (and 2), Opera, and perhaps Chrome and you've got a full suite of browsers to test with just on Windows. For the most part, that will give an accurate view of how it will look on Mac and Linux, but it doesn't hurt to have a VM of both a Linux distro and (cough) OS X available to test properly with.
An amazing and free tool. I also do manual testing in the common versions of major browsers. If I don't have a system to run that browser, I just find a friend to borrow from for an hour or so.
and in VMWare:
XP SP3 with IE6
XP SP3 with IE7
XP SP3 with IE8, Chrome, Safari 3, FF2
The workflow is, Ctrl Shift R, and click around.
I run Ubuntu and have 2 VMWare virtual servers running XP with various browsers.
The exception is when I want to do something more complex, then I test feasibility of this particular feature in all browsers as soon as possible to see if there is not some showstopper (like Explorer's JavaScript engine being too slow).
Try to keep markup as simple as possible. It's good both for performance and for cross-browser compatibility. I had many cross-browser bugs disappearing just with refactoring.
When stuck, try to get the same behavior from all browsers, even if it's buggy. It can be easier to get to uniform correct appearance from uniform incorrect one than from the situation where you have mixture of good/bad behavior across browsers.
I just do it all manually - FF2&3 and safari usually have very little differences (if any), but opera and obviously IE sometimes have strange quirks.
Verify compliance with W3C standards as a baseline, follow a proper subset of those standards whenever you can, and then point-test with large footprint (and buggy) browsers you might have to deal with. IE, for instance, can need special coding. FF, Opera, Safari and other such do not generally require any special-casing.
If you're compliant with web standards and the web page renders badly, then any problem reports are generally browser bugs. With that as a starting point for the ensuing discussions, you can then decide if you want to add support for the (buggy?) browser, or request that the accessor upgrade or migrate to a more standards-compliant browser.
Of course test harnesses can and do help here. But the closer you stay to the W3C and applicable standards, the more bug-resistant and future-proof your web site is, and the less browser-tail-chasing you will likely need to do. And the less point testing you can need to fund, particularly as you build confidence in the standards and the core browsers.
As for reading material, a subscription to communitymx.com is well worth the costs; that's one of the better HTML and CSS-oriented sites on the net.
Offers a set of virtual machines for browser testing, or anything actually.
I used the service once to get around a XP-only Java application installation -- installed the application into a machine via the service and then copied the JAR-files to my own machine. Worked like a charm.
I'm going to go the route of virtual machines, and give Multipe IE a shot so that I only need one Windows VM. After that, I think I'll start writing up some scripts (text, not code) to follow, step-by-step, to check various functionality.
Also, webrat (http://github.com/brynary/webrat) has received a lot of commendations on the rspec-users mailing list, so I'm definitely going to give that a whirl.
firefox on my dev box
safari on my living room mac mini G4 (vnc from dev box)
IE? i call my friend to test or just go to internet cafe
iirc vnc server can take external ip ... so presummably you can connect to vnc server half globe away and see how people there connect to your site
of course the bandwith is shared between browsing and vnc-ing so u will get less than accurate experience