I just did this in my 20 gallon yesterday, so I can tell you from very recent experience that it is a huge mess but worth it. I removed my fish (not sure if that's the right thing to do, but I was afraid of all the debris and hullabaloo stressing them out more than a few hours in a bucket) and all my decorations, then proceeded to scoop the gravel out with my net (not recommended unless you have a big, sturdy net).
Once the tank was cleared out I somewhat unceremoniously dumped a pitcher of sand into the tank. Here's what I learned:
YOU MUST UNPLUG YOUR FILTER BEFORE YOU DO THIS! Mine clogged, sputtered, and died almost right away. Save yourself the trouble of taking it apart to clean it out: unplug the filter and let the bigger bits of sand settle to the bottom before you plug it in again (this should only take a couple of minutes). If you want to leave your fish in while you add the sand, I would add it in one cupful at a time, as gently as possible, because a falling pitcher of sand will most definitely injure them.
The water will get very, very cloudy...but the filter should be able to sort it out in a day or so (mine took about 18 hours until I could see completly through the tank). I added my fish back in once I could make out the heater in the back of the tank. The cloudiness doesn't seem to bother them at all. It will, of course, depend on your fish, but the change shouldn't finish them off.
The hassle is well worth it...compared to the old ugly blue gravel I had, the sand is so much nicer and more natural looking.
Here's a great pinned topic on it if you're looking for more info.