As far as testing goes, you just can't do enough. I recommend that if an application is going to be run in Windows 98, Windows NT, Windows 2000, and Windows XP, you test in all these environments. I also suggest that you test an application extensively on the lowest-common-denominator piece of hardware so you can ensure that it will work on all the machines in the environment; an application might run great on your machine but show unacceptable performance on a user's slower machine.
It usually helps to test your application both in pieces and as an integrated application. Recruit several people to test your application and make sure they range from the most savvy of users to the least computer-adept person you can find. These different types of users will probably find completely different sets of problems. Most importantly, make sure you're not the only tester of your application because you're the least likely person to find errors in your own programs.