c2x and Molecules
One of the better programs for plotting isosurfaces appears to be XCrysDen. It is not perfect, but it tends to do what I need. There are plenty of alternatives.
Those who prefer Jmol should see also this example.
Let us start with ethene in an 8x8x7 Angstrom box. Sufficient input files for CASTEP are:
ethene.cell%block LATTICE_ABC ang 8.000000 8.000000 7.000000 90.000000 90.000000 90.000000 %endblock LATTICE_ABC %block POSITIONS_ABS C 4.698560 4.000000 3.500000 C 3.301440 4.000000 3.500000 H 5.270880 4.923920 3.500000 H 2.729120 3.076080 3.500000 H 2.729120 4.923920 3.500000 H 5.270880 3.076080 3.500000 %endblock POSITIONS_ABS kpoints_mp_grid 1 1 1 kpoints_mp_offset 0.25 0.25 0.25
Castep should generate its own pseudopotentials, and run that calculation in about a minute. Note that the k-point chosen will minimise interactions between the neighbouring periodic images.
Charge Density
$ c2x -v -c ethene.check ethene.rho.xsf $ xcrysden --xsf ethene.rho.xsf &

Try clicking the "Zoom +" button a few times, then select Tools, Data Grid. The input file contains just a single data grid, which will be selected, so click "OK", type in an isovalue of 0.5 in the next dialogue box, and then click "Submit". Drag with the mouse to rotate, and one bone, or ethene charge density, results.

Should you feel tempted to save or print the image, you may wish to change the background to white. Click on the coloured box at the top left beside the "File" menu, and select white.
Unfortunately XCrysDen limits cut planes to being parallel to the cell axes, but they can still look pretty. In this case the bonds have been removed with Modify, Ball/Stick Ratio, and setting the ratio to zero.

Wavefunctions
Visualising the wavefunctions / bands has been moved to a separate page to mark the fact that this functionality now also works with Abinit, Quantum Espresso and VASP.