I used a scoop that came with my tank for removing my gravel (as a replacement - how about a mug or cup?), but did it without removing the fish. While I was doing this, I kept my filter (external canister) running, which sucked up most of the cr*p that had been in the gravel.
Then I left the tank (filter still running) for about an hour, to let everything settle down a bit, and to give the fish a bit of a break. After this all the cr*p from the gravel that hadn't been sucked up by the filter was sitting on the bottom of the tank, so I could easily syphon it out.
Next I turned off the filter and (using the same scoop) put the sand in. I filled the scoop (again, you could use a mug/cup) about half way, lowered it right to the base of the tank and GENTLY tipped the sand out, so that it didn't fly up too much in the water. This took surprisingly less time than I'd expected (I was worried about leaving the filter off for too long). Finally I left it for another hour or so, before turning the filter back on, to let the sand settle. The tank was never very cloudy, and after the hour it was almost completely clear again.
People have said that leaving the fish in will be far too stressful for them, but as far as I could tell they had absolutely no problem with it. I left two pieces of bogwood in for them to hide on/around/behind, just in case, but they were far too interested in what I was doing to be scared!