Okay, the solution is:
When you tell the IA-1 to boot from the flash slot, it treats the flash slot as bios device 0x80 rather than 0x81. If you built an image on hdc, linux will like it but lilo will load from 0x81. That happens to be the internal flash, which holds the wince stuff. Since a random swath of wince != lilo second stage, lilo freezes when running the second stage, ergo the "LI".
Drive geometry is whatever the card reports when you put it in your linux laptop. My cards reported 4 heads 32 sectors and 8 heads 32 sectors. Use that geometry when making your image.
If you have to guess, try 32 sectors, 2 4 and 8 heads.
In lilo.conf on your build machine, use:
disk=/dev/hdc
bios=0x80
disk=/dev/hda
bios=0x81
Adding "linear" to a blank line in lilo.conf can sometimes get a boot if you got the geometry wrong, but it doesn't appear too reliable. "lba32" seems to gum up the works. Do not add 'append="hdc=..."' to lilo.conf; let linux use the default settings and tell you what they are.
Although I've started seeing "Block move error 0xAE" from lilo for some reason... Wierd. After a couple retries it works fine. Bad flash card maybe? Ah well, it works; I'm leaving it alone.
Now, if I can get usb ethernet to work... But that's another thread.