You might look at the preferences for controlling commitments to see if something like only committing when fully in stock might work here. That's mostly a shot in the dark.
You could use a workflow or script to hide the fulfill button unless all kit items are committed. That one will be a bit of a challenge, but I'm more confident in that solution.
Alternatively, you could look at doing an assembly item and building it when it's in stock before fulfilling - but this has some extra transactional work to go with it.