- Have a computer with a CD-ROM drive and enough RAM ready.
- (Can't say it often enough) BACKUP ALL YOUR IMPORTANT DATA!
- Download a live-cd of Gparted.
- Get a Live-CD of your favourite flavour just in case you need to work with a console . I like to use Xubuntu, because the desktop environment is saving resources and I need the shell most of all anyway.
- Get the CD version of Super-Grub.
- Set the drive jumpers (master/slave) accordingly to the setup in your machine.
If you use P-ATA 2.5'' drives, get a 3.5'' to 2.5'' adapter for each of them to be able to connect it to the normal IDE bus.
In my case, the Windows system partition as well as the ntfs data partition and the linux ext3 home partition were copied almost perfectly; however, the Linux system partition was entirely corrupted. I restored it via dd, see this post about dd, this post about mounting images and this post about mounting network shares
Now you have a nice and resized copy of your OS's on the new hard drive. Plug it into your destination computer. BUT: booting will still be a problem, since you never copied the Master Boot Record (and be very careful about fiddling with the MBR, you might kill all your data)
Here the SuperGrub disk kicks in: just boot from it and choose super-grub. The disk will rewrite an appropriate boot sector code and will enable you to boot at least one of your OS's. BTW: it can also restore a Windows XP MBR, if you just happen to have only this OS...