I couldn't wait for my AVR programming cable to arrive from Sparkfun, so I decided to build a parallel cable.
Long story short: it works. I used the pinout suggested by http://www.bsdhome.com/avrdude/, which in avrdude is the "bsd" programming device. Although that site suggested 1K resistors in series with the signals from the parallel port (to protect it from current flow from the AVR circuit), I couldn't get the device to program successfully with them in place. So, I just used wires :-)
For the cable, I soldered 5 wires of an 8-wire ribbon cable to the DB25 connector, and crimped a 16-pin socket-style connector onto the other end. I don't know exactly what those connectors are called, but they're designed to fit into an IC socket. That makes them nice for breadboards, which can't really accept dual row (IDC) headers directly.
For the program, I used the code from Elliot Williams's excellent (no, inspiring) piece on cheap AVR programming. I didn't build his development board/programming cradle (did I mention that I hate soldering?), but I used the same circuit.
Here's an amazingly crappy digital photo of the circuit and the programming cable:
Dave Babcock and Greg Link helped me put the whole thing together. It's really nice working with actual engineers :-)