In case it helps someone else, I just had this problem while a USB stick was connected to the computer. Removing it solved the problem.
Buggy? Yes, but at least it makes sense, I guess
I’ve had the same problem here, because I like to do most of my Win7 image preparation in VirtualBox, then clone my generic VirtualBox image to specific hardware BEFORE running sysprep. [Finally I install hardware- or classroom-specific software, run sysprep and capture.]
But this winload.exe error has been forcing me to “recover” each pre-sysprep clone, which is time-consuming (and labels every system here as “recovered” in the boot loader). After trying every combination of fogprep, bcdedit and regedit I could find, I did some deeper investigation (including trawling through the BASH scripts that make FOG work, comparing MBRs byte-by-byte, etc.), and I determined that the problem was in the BCD (Boot Configuration Data). The bcdedit commands described here and elsewhere don’t work, because they don’t instruct the boot loader to search anywhere for anything.
I wasn’t able to find bcdedit commands to replicate what sysprep does to the system BCD store, but here’s what I did to achieve the same result (using VirtualBox snapshots):
I hope this helps someone!