How to mix 2 shaders depending on distance from camera
Set up the nodes as pictured below. Add Camera Data node (Add [Shift+A]-->Input-->Camera Data), then Math Node (Add-->Converter-->Math). Optionaly you may add the Color Ramp node (Add-->Converter-->Color Ramp).


With the Math Node set to Substract try to experiment with its value (the closer to the object camera is the lower value should be).



Use Color Ramp node to make the transition between colours/ textures soft or sharp.




Edit:
For smoother transitions you can use other math nodes in combination. For instance put a logarithm node between the Camera Data Node and Subtract node. Change the color ramp to Cardinal and also change the direction of the ramp. Set the bottom value of the Logarithm to 15.0 and the bottom value of the Subtract to .250. Subtract becomes an offset of sorts.