I am wondering about the path in the error message being reported as a Unix style path: "~/.vsdtemplates". Are you using a Unix style shell, such as cygwin? If you are, can you check what directory "~" resolves to (cd into it, and do pwd, or check HOME environment variable), and if it is the home directory for the same user under which vsd runs (it should be)?
If it were a permission issue, one would think the error would have indicated so, as in the following example, in which my home directory did not have write permissions set:
Could you create an empty .vsdtemplates file in the home directory for the user under which vsd runs (make sure it is writeable by that user), restart vsd and try saving a template? Does that work?