However, some issues can not be easily fixed or even fixed at all. For example, applications that come with .VXD kernel mode drivers (for win9x). These do not work in the NT versions of Windows. In such a case, you either stick with Winoows 9x (possibly running your App within a virtual machine running 9x), or get a newer version of the applicaiton or the driver for one that runs on 2000/XP/2003.
Application comptability has been a major focus of MS for some time, and they've done some great work, to some degre behind the scenes - application compatibity is an OS feature and is used often without you even knowing it - automatically fixing applications. as a result of this work, MS has also produced Application Compatibility Toolkit, which contains tools and documentation to assist you in remediating most, if not all compatibilitly issues. Many issues can be remediated by using the toolkit. The toolkit enables you to apply individual fixes to an application and test the results. Once you fix the application, you can create custom application compatibility database (an SDB file). By using sdbinst.exe, you install that sdb to your system and from then on, every time the application runs, it gets properly dealt with at run time. It's dead cool stuff - and I suspect most users, and most admins are blissfully unaware of it!
A revised version of the application compatibility toolkit, version 4.0, is in the works - and should be due anytime soon. MS is now adveretising the TechNet Support WebCast: How to use Microsoft Application Compatibility Toolkit 4.0 to manage application compatibility on Microsoft Windows. If you are doing deployment, I'd advise taking a look at this webcast.