First: bitcoin will never be used for point-of-sale transactions. It requires a minimum of 30 minutes - 1 hour (depending on the vendor's level of paranoia) to verify transactions and such a payment delay will never work in a point-of-sale setting. Lots of people propose ideas to try to get around this but they all require vendors to accept unvalidated transactions, which is equivalent to taking someone's word that they will pay
What do you think credit cards are? Unconfirmed Bitcoin transactions are still several times less likely to fail after the customer has left than that. If you are trusting enough to take credit cards, you might as well take unconfirmed
valid Bitcoin transactions as well.
What do I think credit cards are? They are a way for me to promise to pay a vendor, where that promise has some credibility because the credit card companies act to insure the validity of the transaction. Back in the 1950s or whenever credit cards came along, you could have made the argument that credit cards were no more trustworthy than end users because they hadn't been proven yet and hadn't been established as a form of payment that vendors could trust. But not anymore; vendors *know* that they can trust credit card transactions; they know who the credit card companies are and the credit card companies know who the customers are. The vendors know that as long as they follow the credit card companies' rules, they will get paid; the cost to VISA of not being trustworthy to vendors would be way too high for VISA (it would take them out of a multi billion dollar market) and VISA knows that and vendors know that VISA knows that.
In short, vendors know they can trust credit cards. They do *not* know they can trust anonymous random joe customer who can so easily game bitcoin to their advantage.
I am getting a little tired of explaining this because it keeps coming up over and over again in the forums. So I'll be brief. Quite simply, a vendor cannot trust an unconfirmed transaction because they cannot know if a double spend attempt for that transaction will succeed. They can trust that such a double-spend has not been attempted if a) they believe that they know every transaction that has ever been attempted for the bitcoin in question, which requires that they see every, or almost every (enough to have confidence that very rarely will they not see a transaction) transaction that goes across the bitcoin network, which, once the bitcoin network is big enough that it's being used at point of sale (in theory, like I said that will never happen), is no small feat; and b) they *remember* every transaction for an indefinite amount of time to protect against double spends, which is no small feat once again in the hypothetical world where bitcoin is so big that it's being used at point of sale; and c) they have to believe that if you submit a double-spend attempt the second after they accept your unconfirmed transaction, that whoever solves the next block will have seen the first transaction first and the second transaction second, if at all, and will produce a block with the "valid" transaction in it instead of the "attempt to cheat the vendor" transaction.
That is alot of ifs. If you really think vendors are going to trust such a system, well then, you are wrong, plain and simple.
Even if the chances of the transaction validation going the way of the vendor is very high, well, it is perfectly free for customers to always attempt the double spend since they are anonymous and it doesn't hurt them at all to try. If they succeed 1% of the time, then that means that 1% of all of the transactions that the vendor accepts are going to leave them without the bitcoins they thought they got. Will vendors trust a system where people can attempt to defraud them without any fear of any negative consequence whatsoever? And can you convince vendors that the chance of this fraud succeeding is as low as 1% and not higher? I don't think they will, and I don't think you can.