Having a qrcode per product is a great idea, except that it might be a bit too easy to accidentally scan the wrong one by accident.
I think the way described by Andreas makes sense: http://code.google.com/p/bitcoin-wallet/issues/detail?id=72
Push button, scan code, pay. Done.
Alternatively, an NFC tag per product could also work, for vending machines like drinks where you can't see the product but rather see promotional images on the front. Touch phone to product, press confirm, pick up product.
There are all kinds of things that can be done here.