I had contemplated using Compact Cassettes as a cheap, fun and hipstery media for small yet valuable backups. Perhaps it would even be possible using only an ordinary tape recorder. So finally I thought: How hard could it be? Let's give it a try!
Searching led me to a Wikipedia article about the Commodore Datassette. It was a tape format used by the Commodore personal computer. It used two different frequencies to encode ones and zeros, and they were read back by simply detecting zero-crossings. I exploited this invention and modified it a bit by adding start and stop bits and a 50-byte lead-in tone:
The resulting program, ctape, is on GitHub. Please note that this is an art project and unfortunately I can't provide technical support for it, but if you get it working, then great! You will run into some interesting problems.
Compact Cassettes sell for 20 cents at flea markets. They come in many colors and capacities. Using the data rate I chose about 1.2 MB fits on a single cassette.
Video proof below!
By the way, I only used text for demonstrational effect. All kinds of data can be saved onto the cassette. A nice way to do this is to use .tar files (which, incindentally, stands for "Tape Archive"!).
Edit: Here's some PNG data:
Update 2/2013: I've improved the modulation scheme since. I added a slight inter-channel delay that alleviates short losses of signal on the tape. There's also a calibration header to account for polarity or stereo reversal.