How to make sure that bidders in an auction have sufficient Bitcoin without storing money for them?
The correct way to do this (beware: extremely technical) is to:


Reserve a coin of your own for each auction (the "auction coin"). This shouldn't be too big (you will lose it until the auction is over), but try not to make a dedicated one just for the sake of the auction (use a small one you already have!).
Create an address for the auction's winning bid (the "auction address"). This can be a normal address, escrow address, or whatever.
Bidders should create a raw transaction consuming this coin as an input, and paying to the auction address. They should sign the transaction for all their own coins (added to the auction coin), and send this to you immediately to place their bid.
When the auction is over, you then sign the highest bid's transaction for the input consuming the auction coin, and broadcast it to the network. Note that this will invalidate all the other bid transactions you were sent.
As soon as this winning bid confirms, you deliver the auctioned product. If it is double-spent, you then pick the next highest bid and repeat step 4.