The first thing to do is ensure Windows is in a state where it can work on the new system. In the case of 2000 and XP, this just means that it has to be able to access the hard drives.
To do this, replace the Bus Master drivers with standard generic drivers.
If you're changing chipset (think in terms of drivers - Drivers for the VIA KT133 work fine with a KT400, but drivers for i815 won't work at all with an AMD760MPX), then you'll want to knock out the AGP drivers too to avoid video problems after the switch. Either uninstall them from the Control Panel, Add/Remove Programs or, in the case of VIA's 4in1, from the driver installation program.
The standard PCI to PCI bridge disables everything AGP, but also makes sure that old AGP drivers aren't around to screw your system up.
You should be good to go now, but it's worth it to do some more cleaning up. Remove both USB controllers (don't do this if you have a USB keyboard/mouse, duh) and uninstall your display drivers. Also uninstall any other non-critical drivers from the Add/Remove Programs in the Control Panel, or any other option your driver installer has. They'll need to be reinstalled anyway, since Windows has to reinstall devices if they change INT# lines and they will.
Open a command line (Start>Run>cmd.exe) and type
C:\set devmgr_show_nonpresent
_devices=1(dont' seperate this command)
C:\start devmgmt.msc
(THIS WILL SHOW DEVICE MANAGER)
click >View click >Show Hidden Devices
With the devmgr_show_nonpresent_devices set to 1, and "Show Hidden Devices" enabled, you can see the trash left from your previous machine. Note also the BDA defamers and filters and, off the bottom of the window, some Microsoft filters. Don't get rid of the filters, just the actual hardware that used to be in your system (or still is, you're reinstalling all the drivers). Just kill anything that's ghosted and not something you shouldn't kill like the filters and deframers mentioned above. You may be surprised by how much crap you find. Don't touch anything under Non-PnP Drivers, btw.
Do your build and power it up. Windows will boot up and complain about drivers. Don't install any of them, just cancel every time. It'll do some automatically, these are probably the ones you don't have any drivers for anyway and you're quite happy to let Windows use the internal drivers.
Next, Install your chipset drivers first. Then the display drivers. It sucks to work in 640x480x16, doesn't it? Now go nuts. Install the drivers for everything and we're done. Remember to reboot every time you're prompted. Nothing screws up a driver install worse than the drivers not knowing what they need to know about the system.
We now have a clean system that doesn't even know you've changed the board.
I've done some really drastic changes like this.
------------------------------
FAQ
What happens if I don't do the IDE drivers step?
One of two things.
1. The system will give INACCESSIBLE_BOOT_DEVICE and won't even boot up.
2. It'll work if you're upgrading between compatible chipsets (i.e. i845 to i850 or KT133A to KT333)
What happens if I don't clean up in Device Manager?
You end up with a whole heap of ghost devices. These can cause problems if you install compatible hardware later on. For example, if I didn't clean out those Crystal CX4624 drivers and I then installed a Santa Cruz (CX4630), I'd have hell trying to get Turtle Beach's drivers on there.
What about the other branded drivers in System (Device Manager)?
You'd worry about these in 98, ASD would kick in probably. 2k and XP are smart enough to replace them with the right ones. The old ones are removed during the clean up phase of this procedure.
Do I need to change the PC Type (i.e. ACPI Uniproc to Standard PC)?
You can change freely between ACPI types, but not from ACPI to Standard or back again. So you can go from ACPI Uniproc to ACPI Multiproc (even on a uniproc system) and expect no problems.
Can I do something like this to move my HD from an onboard controller to a RAID or PCI controller, or vice versa?
No. The onboard controller has a standard 'location' where standard drivers will always be able to work with it. PCI and RAID controllers have no such standard; you'll just get INACCESSIBLE_BOOT_DEVICE. You may also get this error if your boot drive is on a PCI controller and you change the slot it's in. This can be worked around on systems with APICs by changing the INT# mapping to match the old INT# to the new location. Other systems can't do this.