but this does not reliably produce only .png (or indeed any!) figures. I say 'reliably' as I have been successful previously in getting the .png figures, but having made some modifications to my document (alas, unscientifically) Sweave no longer produces any figures.

The fig=TRUE option really just saves some typing by freeing you from opening the device, closing it and then inserting the \includegraphics{} command for LaTeX. If you really want fig=TRUE to support PNG output you will have to roll your own modified Sweave driver or use this one created by Thibaut Jombart.