The foreground trees are Xfrog models. Adding a believable snow layer on these was a little tricky. For me, the most logical way of doing it was to pour some particles on the leaves, using Particle flow (with speed at 0 after the collision), but this was way too slow, even after a good mesh optimization. I ended up using Blobmesh (in Compound Objects), which basically creates a sphere on each vertex of a selected object then "melts" the spheres together to form a single mesh.
I applied Blobmesh only on the most exposed leaves. I had to find a balance between not enough details and too many. With too much resolution, the Blobmesh tends to look like the leaves shape, which is a simple plane with opacity map (Fig.05).

Fig. 05
I also added some modifiers like Relax, Turbosmooth and a little bit of noise (Fig.06).

Fig. 06
I used the same technique for the smaller vegetation (Fig.07).

Fig. 07
The rocks are very old meshes I did about 10 years ago (it's time to make new and better ones, maybe for future projects!). For the snow, I used a Landscape shader, which is a kind of "Top\Bottom" material but with much more parameters (part of the Lume shaders, works only with mental ray I think). I applied this shader both as a mask for the rock/snow material and as a Displacement map (Fig.08).

Fig. 08