I haven't played with this either, but what about using an initrd, and then provide a udev rule to give your usb stick a consistent name to mount and pivotroot from there...?