I made a material function a couple of months ago to overcome the issue of terrain textures visibly being tiled at a distance.
It basically has multiple world-aligned texture nodes with different texture size inputs (could be done with standard texture samplers as well), and lerps between them depending on distance to the camera.
I suspect something like this has been done before as it seemed pretty straight-forward to me.
Anyway if there's any interest in this I'll have a look at making it more efficient and parameterised and put it up online eventually.
C&C very much welcome.