Upgrade motherboard and CPU without reinstall
This should work fine overall for most modern Linux setups. Until last week's rebuild of my home server (moving from Debian/Lenny to Ubuntu/10.04 and installing a set of shiny new drives to rebuild onto) it was on it's third CPU+mobo combination and both switches of CPU+mobo worked fine. Also, when a work file server died a while ago we just transplanted the drives in another completely different box and everything worked just fine (all relevant hardware was detected, the software RAID arrays assembled fine, and so on) aside from the network device numbering issue I'm about to mention.
It is not unlikely that there will be some reconfiguration work to do due to differences in device enumeration. The motherboard's on-board LAN controller will most likely become eth1
if the previous board's was eth0
for instance, and in this case you will need to make some changes to either configure eth1 and any firewall/routing rules accordingly or reconfigure udev to remove the reservation for eth0 from the old NIC and set the new one to have that name (the file to change for this appears to be /etc/udev/rules.d/70-persistent-net.rules
under Ubuntu's default arrangement).
There may be similar issues with drives getting named/numbered differently especially if you have several, but Ubuntu identifies partitions by UUID by default, as do the kernel's LVM and RAID support for identifying their volumes, so this should not be an issue in most cases.
I would not expect any problems that would simply stop booting completely (you will be running a pretty new kernel with 10.04, so shouldn't need to worry about the new board having hardware too new for the kernel to properly recognise), and if there were any such problems they could probably be fixed with a little jiggery-pokery after first boot or from a LiveCD, but I would recommend taking fresh backups of important data/configuration anyway, just-in-case.
In the above I'm assuming you are using one of the stock Ubuntu kernels. If you are running a custom kernel+modules more care is needed, as you may have left out things needed by the new board but not the old, but if you have installed a custom kernel then you'll be aware of the relevant things to be aware of here!
Windows XP or later can often survive a motherboard switch-over (after many reboots and perhaps a visit or two to SafeModeLand to sort out drivers) as it isn't nearly as pernickety as it was in the NT days in this regard as long as you are using the standard windows drivers for your I/O controller rather than something specific to the motherboard, but it is a much less safe bet than with Linux. A big enough jump in CPU/mobo tech (from single core single CPU to SMP and/or multi-core perhaps) which mean a different HAL being needed (or just a different one being optimal) will either cause Windows to fail to boot or fail to make proper use of the new hardware.
With any OS, if you are using your current motherboard's RAID controller (which will be a "fake-RAID" arrangement) for RAID instead of having it operate as a bog standard PATA and/or SATA controller then all bets are off and you will most likely need to reinstall. As Bob suggests, moving down from 64-bit to 32-bit would require a reinstall too. And also for any OS, having a second machine available is a useful safety net in case you need to get online to grab revised drivers or research some other problem that takes your main box temporarily out of action.
I agree with JNK...this would NEVER work on pretty much any Windows machine. They are too finicky and you'd get BSOD pretty much right away. Linux is more forgivable however. I moved my HD to another machine, and booted from it once (a while back!) and kudzu just detected everything as new hardware and installed drivers for it. My system ran fine, and was pretty stable. Of course, you should make a backup before trying anything like this, even though your data should be safe.
This should work fine with Ubuntu. All your hardware is detected on boot, and the appropriate "drivers" (kernel modules) loaded. This is, of course, assuming you aren't doing anything silly like putting a 32bit CPU into a box running 64-bit Ubuntu or anything.