You want to use partimage. This is a console (ie. command line) utility; there may be a gui for it, but I find it pretty easy to use as is.

Open a root console, then type 'partimage /dev/hda1' (/dev/hda1 is the first partition on your master hard drive; typically your Windows XP partition). You'll go through a series of dialog boxes; pick out the backup options, choose gzip compression (bzip does not work with NTFS), and save your partition image file to a sufficiently large hard drive space (a second hard drive is best, formatted with a linux filesystem like ext3 or reiserfs, NOT fat32 or ntfs).

To restore the partition, just run 'partimage /dev/hda1', except choose the restore options. Remember, your target partition must be the exact same size as your original partition.

I've done this with my Windows XP NTFS partition and it works well. I imaged a Windows XP partition on a 40 GB notebook harddrive (it was actually /dev/hda2 since /dev/hda1 had all the pre-installed Windowx XP oem system recovery files), then restored it to a 40 GB partition on a new 80 GB harddrive (the rest of the new hard drive has an Ubuntu install). Now I happily dual-boot!

The only hiccup is that when you restore your Windows XP partition, you must then boot your Windows XP system recovery CD and restore your MBR (master boot record) from the recovery tools. If you want linux on the same hard drive, install it or run grub/lilo AFTER restoring the Windows XP MBR.