If your models are closed, and not too high-poly, you could try shadow volumes. Shadow volumes dont suffer from aliasing but they are relatively expensive in CPU time. Soft shadows can be done with shadow volumes, but AFAIK the only way involves having two shadow volumes for each shadowing object, which is pretty hard on performance.
You cant just apply a gaussian blur to a standard shadow map, since the map stores depth values. When you blur the shadow map, the depth values become invalid. You could possibly render out the shadows to a screen buffer and then blur that, deferred-style, but the results would probably look quite strange.
Alternately you can use projective shadows, where you render shadow maps from the geometry you want to be shadowed, blur them, and then apply them as a texture on the geometry you want to shadow. If anything gets between the caster and the receiver its not really gonna work out well though ;)
Hope that helps.