How to have a nice visual join between two colliding meshes? I don't know if the answer is in the modeling, texturing or even the compositing part but my aim is to be able to achieve a nice visual look between two meshes (like in the render shown below).

The picture is a snowman scene and one of the worse parts of the render is the joint between the ground and the snowman.

When looking at it, it is pretty obvious that both snowman and ground are two separate objects and that is because when I tried modeling the ground as an extension of the snowman, the textures wouldn't apply properly and the overall look was even worse than the current result.

This is only one example out of many other situations in witch I get this kind of issues.

I'm interested in knowing what solutions could be found to that problem.
In 3D modeling this is often quite difficult.

You could make them the same mesh and join the geometry, then use a vertex-group or vertex-colours to blend between 2 materials (most obvious solution, check on tutorials for blending between materials).

You could cheat...

add grass (particle systems), pebbles, rocks etc - this is what happens in real life isn't it? It will likely increase your render times but hide the join.
you could apply alpha to the lower part of the mesh that meets the ground so you don't see a sharp change.
You could add a strip of faces which sits just above the join and blends between the 2 surfaces (with alpha on both sides so you don't see any hard edges), I don't recommend this but it can be made to work, you just have to be careful that lighting is ok and its not casting shadows on the faces below it.
You could render them on different layers and composite them, alpha blending parts of the lower mesh. (I don't recommend this but adding for completeness)