You can also use Cascading Style Sheets to make an alternate stylesheet that gets used only when the user prints the page. This has the benefit of being completely transparent to the user; no "Click here for a printer-friendly version" or anything like that.
If your stylesheet is embedded, you can modify specific rules by using an @media(print) rule. If it's separate, use another link tag, and add the media="print" attribute to it (you might also want to add media="screen" to your main link tag, just to make sure).
I know this works in NS6 and OmniWeb. It should work in IE5, though I haven't tested it there. I don't know about iCab.