I don't think there's a limit on the size of a loop system. I run X (ok, TinyX) in mine with a 20 meg image on a 32 meg flash. The loop just is a blank file -- and then the inside gets formatted as, say, ext2. Then you mount the main system image as RO to prevent accidental writes.
Then you use a smaller image as a ramdisk with some startup files in it. SYSLINUX or LOADLIN loads Linux from the ramdisk, which then does the root pivot thing and loads up the image.
I tried UMSDOS. It didn't work very well.
1) The filenames in DOS are still 8.3 2) It seemed to lose filesIt just sucked overall.