still does not look like texture filtering is on? check your samplers for the shadow depthmaps and activate texture filtering by changing something like: sampler sDepth1 = sampler_state { //... MinFilter = point; MagFilter = point; //... }
to for example: sampler sDepth1 = sampler_state { //... MinFilter = linear; MagFilter = linear; //... }
The biggest problem with vsm is in my opinion light bleeding, when shadow casting objects overlap. A better alternative would probably be exponential shadow mapping, it is very similar, but needs only one depth value instead of depth and squared depth and has less issues.