1. When paying, the user scans the QR code of the shop address where the payment has to be sent to
2. The user includes the amount to pay and signs the transaction in the phone (android/iphone/etc) wallet
3. Now the transaction gets converted into a transaction QR code in the user's phone -> Offline broadcasting
4. The shop seller can now scan the transaction QR code in the shop's POS which has to be connected to internet
5. The shop's POS broadcast the client's transaction and immediately verifies the payment
Let me know what you think of the idea and if there is any extra trouble you can think of.
This idea is implemented in
Bitcoin Wallet since about 2 years.
You can even use NFC for transmitting Bitcoin requests and transactions.
Problem using QR: Some transactions are too big (in bytes) for QR codes.
There is even a branch "bluetooth-offline-payments" that pairs a Bluetooth channel with requesting Bitcoins and uses that for sending the tx. Advantage: You don't need to scan a code twice (or use NFC twice).