You can get a detailed step-by-step instructions with pictures and a great bill of materials (and where to buy them if needed) here, via makehackvoid.com, but here's the gist of it:
- Design your circuit (here's a directory of free software for that)
- Print it on photo paper using a laser printer
- Tape the paper onto a PCB blank
- Heat-transfer the ink from the paper to the PCB blank
- Soak the board + paper in cold water
- Peel off the paper, scrub off remaining paper leaving nothing but toner in the shape of your circuit on the copper surface of the PCB blank
- Etch off the copper that is not covered by the toner (lots of methods available; soak it in acid, wipe it off with ferric chloride solution)
- Wipe off the toner with a solvent like acetone, leaving only the copper circuit
The speed and relative simplicity make this a great option for rapid prototyping, and testing new circuit/Open Source Hardware designs prior to production runs.
Lots of variations have been tested on the process above. Tom Gootee talks about his process for it and experiences with various tweaks, like using a clothes iron on the linen setting instead of a laminating tool.