Verify that the partition you are trying to chainload from really is the correct one.
So, if the Windows XP chainload section in grub.conf looks like this:
The partition specified as hosting Windows XP is (hd0,5), or in Linux techspeak /dev/hda6. hd0 is hda and the partition number in Grub techspeak is one less
than in Linux because it starts with 0 instead of 1. So (hd0,0) is the first partition on the first IDE disk - or /dev/hda1. Verify that you have the correct partition specified. You can run fdisk -l /dev/hda
to get a list of what partitions you have on your disk.