You really can't get away without having a publicly accessible `staging` environment these days for remote clients. Or at least trying to use something like [Vagrant](https://github.com/ideasonpurpose/basic-wordpress-vagrant) to keep the environments as close together as possible. You can also have the client checkout the Vagrant environment with `git` then just pass your database to them when it's time to update.

Hosting companies like [Pantheon](https://pantheon.io/) include several environments like; `staging`, `test`, and `live`. While [Cloud9](https://c9.io) is a [cloud based editor](https://iprodev.com/20-best-code-editors-for-real-time-collaboration/) which means you could edit your code and share the results with a remote user in real-time.

[WP-CLI](https://wp-cli.org/) does a really good job of giving you the ability to [`export`](https://wp-cli.org/commands/db/export/) / [`import`](https://wp-cli.org/commands/db/import/) and [migrate databases](https://wordpress.stackexchange.com/questions/235879/fastest-way-least-amount-of-steps-to-locally-import-a-remote-database-using-wp). 

And [`rsync`](https://www.digitalocean.com/community/tutorials/how-to-use-rsync-to-sync-local-and-remote-directories-on-a-vps) will always be a great way to sync folders between servers.

http://welaika.github.io/wordmove/ looks interesting too. Found via http://vccw.cc/