In the future I feel like there will need to be some sort of banking system/account tied into btc for it to be a realistic option for buying things in person. Maybe some sort of debt card or something, and a system similar to checks where if something goes wrong down the road you are hit with penalities or face legal trouble.
We aren't there yet, but hopefully in the future someone/some people come up with something to solve this problem.
Like someone else mentioned though, as far as BIG purchases go, i doubt most people would mind waiting 10-20-30 minutes for confirmation.
The issue with this is that it seems one of the core tenets of BitCoin is the distributed nature, which would make it difficult to have any system to enforce fees. I could see perhaps the implementation of a funds "holding" extension that allows you to pre-verify the existence of certain funds and lock them for a specified period of time. Think like an authorization on a credit card: when you go to pump gas, the pump authorizes some set amount (maybe $75), and then the transaction then later "clears" and the amount up to the $75 is then removed. If no clearing transaction is processed, the funds auto-release after a specified period of time (typically 3 days). I don't know if the BitCoin protocol currently supports what would be needed for this, but it seems like a reasonable way to address the problem.
A related approach would be using the above idea of fees, but basically do the "authorization" against the fee account to make sure you could at least afford to pay the fee if you didn't complete the transaction.