I've gone trough several problems that sounds the same as you have. And the troubles has always come from the boundary setting. Somehow, one or more nodes or edges on the mesh belongs to Neumann Bc's which should be Dirichlet Bc's.
I never calculate mesh quality as long as the code converges to the desired solution, i.e satisfy the tolerance, for all mesh levels. Check if your solution changes when you refine your mesh. If no spesic changes then your are just fine!