What are the contents of boot.ini?
How big (size in bytes) is the .ima?
Is it a partitioned image or just a "supre-floppy" image?
How (exactly) are you booting/loading/chainloading the NTLDR?
(using grub4dos it would be normally possible to move boot.ini, NTLDR and NTDETECT.COM to inside the image)
If the filesystem in the partition is NTFS, you can use, as hinted, compression of NTFS, thus allowing you to make a smaller image.
NTFS compression is not that bad, I doubt that it will be less efficient than gzip, maybe lxma or lz4 may provide some (marginal) advantages in size.
There is also another possibility, using a cab compressed image, in the good ol'days it was possible to use in PE 1.x instead of .iso a cab compressed .is_ image, most probably the same can be done with your full XP but it will use a lot of memory (this is more or less what you just proposed, which is built-in in SETUPLDR.BIN and maybe also in NTLDR):
In the case of the PE there are some possible patches around, see also:
that most probably can be used to modify also a "full XP", but it has to be seen.