A low security solution would be:
1. Let the sender (costumer) sign the transaction and send it to the receiver (shopkeeper).
2. The receiver can check that there are enough founds in the account and the signature. Therefore he can have a quite high level of trust in the transaction.
3. Receiver then sends the transaction to the network for actual verification (and inclusion into the block chain).
This solution can be compromised (I believe) if the sender spends all his BTC in just one block. But I believe for small transactions it should be good enough. And on the sender side you need only the ability to generate and sign transactions, not a complete blockchain, this could be good for mobile use.
The security of over the counter trades could of course be easily enhanced, if you are willing to let go of privacy. Then the sender could sign (in handwriting not cryptographically) some receipt of the transaction which is thrown away, if the BTC transaction runs smoothly. Otherwise the receiver of the transaction would have some legal leverage.