The next step is to check and see if loop has max_part option. (modinfo loop as root) Reload loop with max_part=16.
Then losetup pointing to the troubled disk image.
From there, things get kind of vague for me because I'm not a Xen guy. You need to see if there's a FUSE module to mount the disk image. If there is, then it's pretty easy. Losetup /dev/loop0 /path/to/disk/image. If you did it right, Linux magically detects the partitions and will have a /dev/loop0 device, and another /dev/loop0p1 device Mount /dev/loop0 /mnt/some_dir -o read-about-fuse-module-options. If that doesn't work, try the /dev/loop0p1 device.
Once you get the file system mounted on a loop device, fdisk and testdisk is your best bets.
It's in Debian's repo's. That's how easy Debian is.