How to lose colour on distant objects?
There are a few ways to make the objects fade in the distance like the image you show.


The most realistic would be replicating what would happen in real life: Suspended particles (haze, smoke or dust) would float in the atmosphere limiting visibility of objects in the distance.

To do that in Cycles you can add volume scattering and volume absorption shaders to the world's volume.


Click on the image to enlarge
A different way to do something similar would be to use a mist pass.

The mist pass can be enabled on the scene section of the properties panel

It creates a black and white image that gets progressively whiter in the distance.

It has a start and depth settings, that can be set on the world section. Objects that are closer to the start distance will be fully black, and those past the maximum distance will be fully white.

The the range from start to end can be visualized as a line, by enabling Display>Mist on the camera settings.



The Mist pass has to be composited into the rendered image using the compositor. Usually you want to Add the mist pass on to the image pass. The Factor on the color mix node will determine how much of the mist pass will be added to the image.



A different way to use the mist pass would be to use it to control the color on the image:


Lastly a different approach would be to use a normalized Z pass.

The Z pass represents the distance from objects to the camera. The limits are controlled by the clip distances on the camera.



Note that the Z pass, being a representation of distance will likely exceed the limits of the 0-1 range of what can be displayed as an image (0 being black, 1 being white), so normalizing the Z pass will convert those values to something that can be visualized.

The main disadvantage of this approach is that the Z pass is not antialiased, so your image might look blocky or pixelated on curves or diagonal edges.




For Additional info on the difference between mist and Z pass read: Difference between a mist pass and a normalized z-buffer?