I've used the t-shirt transfers available at Wal-Mart (the ones for white shirts and the ones for colored shirts).
Use your favorite graphics program to make the design and reverse it horizontally. Put the paper in the printer and print it out. Cut it out. Iron it to the shirt which takes only a couple minutes, not even that if it's a small image. Wash the shirt per the instructions that came with the transfer and there ya go.
They last for quite a while but the white ones tend to fade and the ones for dark shirts get little cracks in them, but they're hard to notice unless you look closer at it. Iron the transfer for a little longer and it will last longer and have a sharper image, especially the ones for the white shirts.
This method is pretty cheap, you just have to buy the transfers (you get like 10 for $20 of the white ones if I'm not mistaken) and a cheap blank t-shirt (or sweatshirt or whatever). I've made shirts that people thought were store bought, for a fraction of the price. Good luck
