Within 15 seconds you would hear from the miner he targeted and know he double spent. The client could be changed to notify you of the double spend. To stop that he would have to keep you from hearing from most other clients for many seconds. That's hard.
Anyway, I'm talking about adjusting the wait to the amount spent. A vending machine that charges 30 cents for a stick of gum could wait 15 seconds and would just eat the loss if an attack like that were being mounted. They do that today when someone uses a slug in a vending machine.
Keep in mind that a node will not forward a transaction if it has already seen one that conflicts. This means that unless you have a direct connection to a miner, chances are you won't ever hear about a double spending transaction (because you will forward the first transaction to the nodes around you before they hear about the double-spending one from the rest of the network). Yes, you can modify your node to connect to deepbit+slush's pool+ArtForz, but those servers cant handle 1000 vending machines connecting to them or even a ton of users who want a bit more security.
Yes, you could eat the losses for small things, however, people would write clients that actively try to double spend on every transaction meaning they pay for their things only maybe 25% of the time, and if such clients gain market share you are looking at eating a lot of losses.