Perhaps you are jumping the gun with theories as to why it doesn't work. Perhaps 32-bit SBCL simply isn't reliable when run on 64-bit Windows. One thing to try would be a small test that calls any foreign function in a tight loop. Let that run for a bit, see if it explodes. If it works, add some consing to the loop to make the the GC is behaving. After that I'm not sure what the next step is in morphing it toward the code known to fail. Maybe go in the opposite direction, stripping down the failing code to a minimum (turn off sound, input, and any other non-video SDL subsystems, rip out all the rendering and event handling, etc.)
(I personally am amazed whenever anything works on any version of Windows, but anticipation of these sort of problems is exactly when I never seriously considered SBCL or CCL for deploying applications to other people)