For texture painting, we've relied on creating many layers like base color, dirt, rust, wear, oil, smut etc, combining them with greyscale masks and modifying them with adjustment layers, all in Photoshop. It is a good idea to build a collection of digital photos that you can process and use as some of these layers. Random noise-like patterns are especially useful for dirt maps, as it is extremely hard to paint such textures by hand.
Some texture layers for the Tiger
To create good greyscale masks, you should try to find images with relatively high contrast stains, rusted metal surfaces etc. First desaturate the image and adjust levels, so that the background is white and the pattern itself is very dark. Then use a very large and blured brush to erase the parts that you don't need, and your mask is complete. Also, the low pass filter has many uses to isolate details in an image and can be used to create tiling textures with little repetition.
Color texture for a partially destroyed building
Some of the layer masks could be proceduraly genereted, like edge maps for the wear layer, dirt maps for the dirt layer etc. Unfortunately we are not aware of any free or commercial plugins other than some for Lightwave that could help in this. Especially the edge maps for the wear layers took a lot of time to paint, using the wireframe UV layout as a reference.