Would this strategy work? Naturally, it isn't without its own flaws either.
Say you're going to starbucks for a coffee. On your way, you "prepare" your payment (as in the same escrow strategy that gmaxwell suggested), but in a different manner:
Starbucks publishes via a standard URL (say,
https://starbucks.com/pubkey) the EC point -- the public key -- to a secp256k1 private key. The key could change all the time, daily, whatever, that's up to starbucks. Then, you generate another private key, computes the EC point, adds the EC point to starbucks's, then hash that public key to obtain a bitcoin address. You prepare your payment by sending some coins to that address and broadcast the transaction. Neither you nor starbucks can spend the coins right now.
You may realize that this is split-key address generation, like how vanitygen bounties work.
So you arrive at starbucks, and place your order. To make a payment, you give starbucks the private key you generated, starbucks can instantly verify that the private key was the correct one and leads to the address you sent coins to earlier and that the coins are confirmed. It's impossible for you to spend those coins because you don't have the other half of the private key. Along with your private key, you give starbucks a "change" address, they build a transaction sending the prepared coins (minus coffee price) to your change address and they broadcast that transaction, or just give it to you to broadcast. They don't have to wait for confirmation, they *know* you can't spend the prepared coins.
Suppose you never made it to starbucks and want your money back - you hop onto
https://starbucks.com/refund, give them your private key and change address, and they send you back your coins.
I think the cons in this situation are better than the escrow/timelocked version, since you can get your coins back immediately (as long as the vendor is cooperating). The vendor has to be trusted to send you proper change, but I think that's less of a big problem since the vendor has more to lose by cheating you.
You could consider this strategy like purchasing a gift card but getting your change in currency. You also have the option to return the giftcard completely and don't have to lock away coins using nLockTime.
Thoughts?