When penetrating oil doesn't do the trick, I've resorted to the Electrolysis Method with great success.
Electrolysis is the least destructive and most thorough method available to remove rust, removing no base metal. It does not require grinders, wire wheels, or acids.
Its simple, using a 2 amp battery charger with an ammeter (which tells you you've got a good connection), a plastic bucket, a piece of steel or iron, and baking soda or washing soda (in the laundry section of the grocery store). Use about a box to each gallon of water (the concentration is not critical).
Put the rusted part in a solution of baking soda. Connect the red (positive) lead of the charger to a piece of steel or iron (with a couple of square inches of surface area), and the black (negative) lead to the rusted part.
The time it takes to turn the rust into a black oxide will vary depending upon the depth of the rust and the concentration of the baking soda. Once the rust turns black (and the solution is rusty), use a Scotch pad or soft wire brush to remove the remaining oxide. The metal that is not rusty will remain untouched. Then treat with paint, parkerize, or bluing.