Doing some research while building some stuff for our store and I stumbled upon a couple of different things you can do to "enhance" QR codes.
You can overlay an image on your QR code directly. To make this work can take a bit of trial and error, but to make this work, build your QR code with the maximum amount of ECC (error correcting code). Then, just slap an image down over the QR code and you are good to go. Like this:
This one is a bit trickier. To be honest, I'm not 100% sure how this works, but the effect is impressive. It would appear that it works by making the QR code semi-transparent and then instead of dark squares, black or white circles are put over the grid. That way, your image shows through. If your image is sufficiently dark enough, there is no need for the black circles, or if the image is white enough, you can't see the circle. Here is an example (via Visualead.com):
In addition to the direct overlay and embedding techniques, you can stylize your QR code in various ways. I didn't test them all, but several effects that ship with Photoshop can be applied to a QR code and it will still function properly. For instance, I tried:
|Glass||1/3/Canvas or Blocks|
|You get the idea...|
And they worked with Scan on my iPhone 5. Here's Sumi-e. I was surprised it worked!