Windows XP is a little buggy about booting from removable storage such as CF cards... a nice 'hack' that i saw is
http://www.instructables.com/id/How-to-make-any-Compact-Flash-card-or-Microdrive-b/step3/Installing-windows/This will require either an internal CD-ROM drive or an external USB CD-ROM drive connected, and the BIOS set to boot from the CD drive before the hard drive.
With your CF adapter properly installed in your computer, install only the card that you want to use as the boot drive and verify that the computer recognizes it as master. Put the Linux live CD in and let the computer boot up. Go to a terminal and run the command, "sudo gparted" (without the quotations). Select the disk that represents your CF drive and right click the partition on it, and click delete. This should leave you with the whole drive as unpartitioned space. Right click the unpartitioned space and click New Partition. Select the maximum available space and set the format to FAT32. Click apply and once it completes, exit gparted. Shut down the live session. Put the Windows CD in the drive, and let the computer boot into the setup. Go ahead and partition the whole disk as your windows partition, and format it to the file system of your choice (I prefer FAT32). Let the installation continue as normal until it reboots. At this point, swap to a Linux live CD (I used Ubuntu 8.04) and let it boot to its startup menu. Choose install, and let it boot into its setup. Go through its installation steps until it asks for what drive to put it on. Choose to resize the drive and give the Ubuntu installation about 2.5GB of the available space. Finish the installation as normal and reboot. Swap back to the Windows CD, and let the GRUB menu pop up. Choose the Windows XP option and hit enter. This should start up the second half of the installation. Let this finish as normal and you have a working install of Windows
Why this works (or at least my educated guess) - The code that checks if windows is being run from a removable device is in the windows bootloader (ntldr). When Linux is installed, it installs its bootloader (GRUB) to the master boot record. Since the Linux bootloader detects other installations on the computer, it will give you the option of starting XP. When it starts XP, it doesnt run the Windows bootloader code and runs its own code instead. This code doesn't have the check