To remove the sulfur compounds' odor we need to oxidize the oil in our skin. We can do that with sunlight, ozone, or chlorine, but these are all fairly dangerous oxidizers and the chlorine will leave your hands smelling even worse than onions. The best method I have found is hydrogen peroxide. The 3% solution at Walmart works very well. Simply soak your hands in peroxide for thirty seconds and ta-da! The smelly oils have been oxidized and your hands smell normal again.
If you want to get really fancy you can add a little dish soap and baking soda (or lemon juice), which will move the PH of the solution away from neutral and add some surfactants to the solution, both of which will help the peroxide reach its intended target. The same process should work for other tough odors, like skunk or gasoline.
You can use the same peroxide in a 50/50 solution with water as a mouthwash as well. It will be more effective in removing odors than alcohol based rinses. Swish for thirty seconds and repeat if needed. It might even brighten your teeth a little.