I dont see why you'd want to blur it a distance, mip maps work fine.
As for making a pixel darker depending on distance try something like this:
in the vertex shader:
float dist=distance(PositionWorld, vecViewPos);
Out.dist.xyzw=dist*0.005;
in the pixel shader:
finalcolor.rgb*=In.dist;
you wil need to play around with the numbers to bias it correctly so it does what you want. basically all this does is convert the distance from the view to the pixel to a biased greyscale color value that you multiply against your current color. This technique can also be use to lighten pixels, and to change alpha for fading out pixels.
obviously you will need to chnage the names of variables to fit in your shader, also when you declare the vertex output make sure you declare the dist variable as COLOR:
float4 dist: COLOR0;
and your pixel input should have it the same way..