I've gone through many different refinishing steps in the past, from wire brushing, to naval jelly, to finally giving up and dousing the darned things in RustOleum! The results have been time consuming and completely inconsistent.
This tutorial details a pretty darned easy way of dealing with rust, scale, and flaking chrome, all with nearly identical final finishes. You can also apply the same steps to furniture, bumpers, or anything else that sits outside and corrodes.
Step 1: Sandblast!
Different abrasives and grits are available to cover just about any refinishing project. Generally, Aluminum Oxide tends to be the best all-rounder. In the case of this steel-based project, I chose 60 grit, since my prior attempts with finer grits met with failure. Ultimately, you're looking to use a grit that will abrade the finish without stripping away the metal underneath.
You can see from these detail shots that the texturing on the metal still retains the telltale pockmarking from the prior rust. Also, all the rust has been easily removed from difficult crevices like welds, text, and flanges. The intention is to take it down to clean metal and remove all the rust so it won't resurface later. Abrasives are fairly cheap, so experiment until you find the one that works best for your needs.
For those of you bemoaning the lack of a professional sandblasting booth, there are many cheaper, portable, options available online that don't even require one (but they make a terrible mess, so use them outside). A quick Google search or a few minutes on HarborFreight.com should find you what you need. Remember, the abrasive does the work, not the quality of the gun!