Well, you could boot in to a linux live cd and essentially dd one partition to another equally or larger sized partition. Or use ntfsclone.
If you wanted to switch the active windows partition, you'd have to do some bootsector fixing, though.
http://www.backuphowto.info/linux-backup-hard-disk-clone-dd
http://man.linux-ntfs.org/ntfsclone.8.html
Using dd, piped through gzip works well for making a compressed backup image, and is easy to restore.
http://www.debianhelp.co.uk/ddcommand.htm
Other decent software I can think of that backup partitions and drives are Clonezilla and Acronis TrueImage, but I haven't really used them. So I don't know if they can save to a new partition or what.
As far as actually creating/shrinking/moving the partitions go, you can try a gparted livecd.