I own a software development company based in Dallas, Texas and over the years have experienced several of the issues mentioned in your post.
Never start work with a client before having a signed contract in hand. The contract is the first step to making sure that both parties understand the expectations of the project such as payment expectations, the deliverable, the project schedule.
I find it helpful to get a down payment from a client to be sure that they are "invested" in the project. If a client is unwilling to issue a payment at contract signing, then you should have more payment milestones at major points in the project such as; design review, first 10 seconds of animation etc. Frequent payment milestones will help your cash flow and will focus the project on meeting the expectations of the client where possible.
Communication throughout the project is key. When a client goes silent that is always cause for alarm. Weekly updates using online services such as Skype or Join.me are essential when working with a client that are worlds apart.
There should be few surprises regarding schedule. As the project is progresses, amended schedules should be prepared and forward to the client for discussion during your project meeting.
It may be a good idea to engage someone located near your client to attempt to contact them to discuss a settlement. Some may suggest getting a lawyer or a collection agency involved, however there most likely is some way to solve this directly to receive (perhaps partial) payment from the client.
I am available for a followup call should you have any additional questions.