Thanks for the speedy explanation.
So what's it going to take to get transaction times down to about 3 seconds, and not require shenanigans on the part of the customer?
Transactions are relayed by nodes even before being inserted in a block chain, at which point they will generally eventually be placed into a block. However, before they have been placed into a block, it is possible the person could simply send another transaction to spend the same coins elsewhere. When people are talking about "a small amount like for a hamburger" they usually are proposing that the merchant look at all relayed transactions -- they should see the burger purchase, and if a bit of time goes by and they don't see any other purchases from the same address, a double-spend would be harder. The attack scenario usually involves a network or other problem which causes some relay nodes to not be connected together, i.e., if the network has COMPLETELY split into 2 segments due to a faulty power line, I could theoretically spend coins differently on each of the two networks. On a sufficiently large network this would be very difficult.