I agree with Dwain. Water in the pan just delays bark formation, and I get GREAT bark with water in the pan. Nothing wrong with letting the water level get pretty low and temps rise toward the end of a cook to "set the bark" if needed, though. I do NOT like dry, thick and leathery bark on anything, and the easiest way I've found to get it is to cook without water in the pan and let temps spike. Guys that use ATC's claim it's the temp spikes that gets you the leathery bark, but I don't have one, and if it's not broke...
Other than that, how you trim can really help as well. I like a fat cap on butts, but want it THIN. It should render and get almost crisp, and I don't leave it on the grate at the end of a cook. Chop it and mix in with the pork! Briskets should be trimmed too, but don't overdo it. Mainly it's that hard fat on the sides that needs to get trimmed out.
Foil IS an enemy to the bark, but sometimes you do what you have to do when you're running out of time. Also, if ahead of schedule, realize that if you hold bbq really hot for long wrapped in foil in a hot cooler or something, not only will the bark lose it's texture, but you run the risk of overcooking the meat from residual cooking. The answer there is to try to time cooks so you don't need to hold for more than a couple of hours at the most, ideally, but open the foil and let the meat lose some heat to stop the cooking while holding.