I've got a few rules of thumb, depending on where I'm diving.
Most of these were formulated after a lot of discussion with other divers on other message boards and after many dive trips:
On day trips, I usually tip $5 per tank to be shared by the crew. If it's a day trip into the Gulf of Mexico or if there's been exceptional service, then more per tank, maybe up to $10 or $12 per tank.
On liveaboards, I start with 10% of the charter rate and adjust upwards for exceptional service (or downwards for bad service). That base amount I give to the captain or whomever is collecting the tips to be distributed among the crew. Then I'll go individually to specific crew members who may have taken extra special care of me and my gear or who may have done something for me that was above and beyond the expected and personally hand them a little bit more gratuity. This is for boats with an international crew.
For boats in exotic/third world locations with local crew, I also take into consideration the local economy and cost of living. Tipping such crew members according to the formula above (which is geared to first world economies) may be more detrimental than helpful in the larger picture. In such cases, I would determine what the typical wage/cost of living index is for the local crew and adjust my tip accordingly. It might not seem like a lot of money to me, but to them it's still huge, and you don't go messing with the structure of their economy. If I want to make it more valuable to me, I might add a gift of some sort -- maybe a small piece of dive gear that they liked or a t-shirt from the States or something else that can serve as a feather in their caps.