How to paint a mesh using materials instead of textures
A simple solution is to use masks.
Create an image to use as a mask between your shaders, and paint on that image.

Better if you can see for your self.. here is a simple file ready to
 paint drive.google.com/open?id=0BxfJ7ZIHabcZNXFfdTdiaGd0TGM 

If you cannot download the file, this is a very basic idea of the node setup: