"Norton Ghost is the traditional commercial tool for this purpose.
Personally, I'm skint, so I use a Linux live CD that has GParted on it. GParted can copy, move and resize partitions, so you can copy the partition to the new disk then resize it to fit."
SystemRescueDisk can do smart (compression aware, empty spare aware) copies of paritions to local media or network shares. Saved my butt several times.