A tiny bit of colour theory before I get too deeply into this, Kim.
With the RGB colour model we generally use, a every colour has two aspects; luminance (the vertical axis in the diagram) and saturation (the horizontal axis). Whenever we make an adjustment to one, we also change the other, and that is the underlying problem in trying to do dodging and burning.
When we dodge or burn, we want to change the luminance (brightness) of the area we are working on, but not the saturation. As the two are intrinsically linked, we can't do that. The problem with the tools in Photoshop is that they add black when one is dodging and white when one is burning, without regard to the saturation of the area we are working on, so unless there is very little work done, the areas we burn tend to look gray and the areas we dodge do too; which is obviously not what we want.
The other problem with Photoshop is the implementation of the tool; it is destructive, so once a pixel is changed, it can't be turned back unless we use the undo functionality. The problem with dodging and burning is that the processes are iterative. We do the operation and build up the effect. If we have gone too far, undoing is a pain, so a better (non-destructive) method is required.
My current method of choice right now is to use a curve adjustment layer. The dodge and burn adjustment layers have a black layer mask associated with the adjustment, so painting on it with a soft white brush, with low flow (I am usually using ~ 2% flow), I can paint and build up the effect. If I have gone too far, I just switch to a black brush to reduce the effect. The reason I use flow, rather than opacity (which is set to 100%) on the brush is the way these settings work. The opacity setting is not-additive, so every time I pass over the area, the amount that is brushed on remains the same, so the effect does not build up (unless I lift my stylus off the tablet (I use a Wacom tablet for this type of work) or release the mouse button. With flow, every time I pass over the area, it will deposit the colour additively, so this builds up the effect more easily.
As I mentioned, the nature of RGB means that the saturation changes as well too, so the clipping mask above the curves adjustment layer lets me selectively change the saturation, by painting with a black brush on the white layer mask.
The following shot shows the adjustment layers for dodging and burning as well as the associated clipping masks. The curve for the dodge layer is more or less the mirror of the one shown for the burn layer.