I used Mercurial (Hg) before, and it was ok to do something like at the local PC:
hg clone ssh://peter@hostingcompany.com/~/mysite.com
and
You should only push to bare repositories (a bare repository has no working copy).
You have two solutions:
EDIT my guess that the remote repo has local modifications is wrong; don't know why you can't push, but the rest of my post is still valid: you shouldn't push to normal repos.