The problem with stuff like gaussian blur is that it requires knowledge of the color of neighboring pixels which were rendered before... and in shaders, you don't have that (at best, you can sample neighboring pixels in a texture). Most games who make this effect will instead render all outlined objects to a separate buffer, perform some post-processing on it, and overlay it onto the screen.
One slightly hackish option you can go for is to fade out the outline based on a fresnel factor. Basically, you take the view vector inside the vertex shader like this:
float3 worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
float3 viewDir = _WorldSpaceCameraPos.xyz - worldPos;
Then you get the dot product between them inside the fragment shader like this:
half NdotV = saturate(dot(IN.normal, IN.viewDir));
Then you have a value which goes from 0 to 1 depending on how much the normal faces the camera. You can use this to mask the alpha of your outline:
col.a *= sqrt(NdotV); // Square root for more dramatic effect
I haven't tried this, but it could be worth a try. Just remember to set the proper blending and render queue.
EDIT: You can also check out this project:
https://github.com/cakeslice/Outline-Effect