More often then not our code is not suffcient enough to show progress to out clinet. It is more of a problem if you are a remote worker. I am in that position for the most part of my career and I had to figure out some of these things the hard way. Maybe this article will help you to avoid my mistakes.
Report, report, report
If we think of ourselves as a army, then our client is a general. We are ought to be a good soliders. We need to inform our commander about things that we do, done and will do. In other words - best way to make client feel in control is to have a good reporting system. Don't make client micro-manage you, be a good solider and keep him informed. It can be daily scrum meetings or something more asynchronous, like email reports from all your coders or recorded demos of features for client. I'm currently experimenting with Screencastify plugin for chrome and recording completed feature as a short video demo and sending a link to client.
Another crucial difference between working remotely and on-site is that client can't come to your desk and ask something. It is really frustrating when programmer that you need at given moment is not available and you do not know why. Natural questions arise: Is he even working? Where is he? Am I paying for this? Best tip here is have a chat for your team, preferably with persisted history (Skype is not good solution, since it may result in lost chat history and missing messages). Inform your client that you are going to meeting, to lunch or when you are leaving, so he knows when he will be able to reach you. We started using HipChat by atlassian and I am very pleased with it.
Last, but not least - No matter what, do a great work
Sometimes people on your team do a bad job. It can be unmaintainable, untested code, lack of communication, bad management. Don't be tricked and don't follow broken system. Best tip here is to educate. Explain problem to client in terms of money, people resources e.t.c. Smart people will listen to you. If you are professional, you will do your best no matter what it takes. Also thing is worth mentioning here, that sometimes client's problem can be our opportunity in disguise. Keep your eyes open.