A neat feature of QR Codes is that they have error correction built in, so even if a fairly large portion of the code has been obscured or destroyed, most readers can still read it. Some QR Code creators out there will even let you tweak the error correction level (less error correction means smaller codes).
Since this correction exists, you can add an image to a code and the code will remain completely functional. I just found a page which will do this all in one shot for you; check it out: http://qr.odoa.eu/Web-QR-Code-Logo.aspx Sure, you can just create a code and paste an image yourself, but this is a bit easier.
The site is in German, but it’s still easy to figure out what’s going on. The code to the left is a shortened URL which will redirect to the ShareMyApps market page. (http://goo.gl/nGJKb -> http://market.android.com/details?id=com.mattlary.shareMyApps). The larger code created by the full link works fine, but less data in a QR code is usually better. The shortened URL could also be used to track scan-through rates (I may have made up that term).
As QR Codes are popping up everywhere, this is one of the many ways to increase scan-through rates for codes; it could also be used to hint at the purpose or content of the code.