Drush without SSH access on remote server
Things are pretty rough without shell access.  You'd have to do a lot of work to make this function correctly.  First, take a look at the implementation of the drush rsync command.  You're going to need to build something similar that uses sftp, or whatever your host allows access to, to transfer files.

Next, you're going to want to take a look at the file examples/sync_via_http.drush.inc.  This shows how you can use the Drush sql-sync command, but use an http GET to fetch your database.  Dumping the database and putting it in a location that it can be served up by the web server (securely!) is left as an exercise for the reader.  You also have to make sure that your Drush alias records define the 'database' record for your remote site; if you don't, Drush will try to fetch it via a remote ssh call to Drush on the remote system.

Once you have this, you can use your sftp command to push your code to your hosting site, and drush sql-sync to pull your database to your dev site.  You'll have to run updatedb manually through the admin interface whenever you push new code.

However, you will find that whatever you think it's going to cost you to switch sites, you'll probably find that the cost is worth it in terms of your time savings.