OP - I like where your head is at, but any "solution" which presupposes widespread use of printing out one-time-use paper bills to pay for things is DOA
Payments are moving to the phone.
That is true for those of us in the community of computer-educated people who like to do as much as possible with their phone, and who have the means and the desire to own a smartphone, like me. This idea is meant to bring Bitcoin to those not part of that community (a whole lot of people), and is meant as a complement to using smartphones for accepting payments and not a replacement. If someone walks in with a smartphone, then by all means they can make their payment by scanning the merchant QR code the usual way.
It is silly and inefficient to print out paper just to take it somewhere and destroy it upon redemption.
It depends on how you prioritize the value of your resources. Most of the time, it is silly for me to pay my bills by paper check instead of online, but there are occasions where a paper check is simply the best practical way. Where paper is scarce and the time available to complete a transaction in a checkout line is not scarce, and a smartphone and wireless internet connection are reliably presumed to be available, then this statement is absolutely correct. This proposal is for those frequent situations where the statement cannot be considered correct.
Any workable BTC POS system needs to enable the customer to pay from her phone.
I fully agree with this, I have just assumed this is already possible outside the scope of what I have proposed. For example, Bit-Pay specializes in this and already has apps that make this possible, and with BlockChain.info this is already constructively possible with a regular wallet or even a watching-only wallet. I am suggesting that a new screen be
added to enable another useful kind of functionality with a practical application, but of course not to suggest in any way that this is the only way one should accept BTC or that the other avenues should be removed.
I think a better solution, using your QR code scanning gun idea, is for the user to enter the final price on his phone in his BTC app. He enters for example 2.347 and hits "Offer Payment". The app then shows a QR code which allows the merchant to take 2.347 BTC from the account on the phone. This would require a common standard that POS terminals and mobile wallets would need to adopt.
I see this as a fantastic idea that could really go somewhere (the root idea the way I see it is it's smartphone payments without the smartphone needing internet access). It sounds practical and convenient, but would need some refinement to work technically. For example, the only way for a smartphone to convey permission to take an arbitrary amount like 2.347 BTC would be to sign a transaction for that amount to fund a fresh private key while keeping the change, and then offer both the private key and the funding transaction to the merchant. That's a tall order of bytes to be crammed into a screen-size QR code (not impossible with the way smartphone screens are going, but definitely pushing the envelope on readability). Or, the phone could just remember pre-denominated codes, just like having bitcoin bills but saved in phone memory instead of printed on paper.