Probably the broader lesson from this is that the terms of the deal were inappropriate from the start. From the looks of it, it appears you have no recourse.
While I'm not familiar with oDesk, I suspect both you and the client have notched up some bad marks on their ratings - you for missed deadlines and them for non-payment. Thus a sour deal is hurting both of you, and if they're not making an effort to meet you in the middle they're going to have problems with subsequent contractors. Only you have an idea how critical that product was - if it was something in their line of business it is probably costing them every day it remains unfinished. In that respect it's in their interest to work out an adjustment so you can get your stuff done and get paid. The more likely scenario if they bring on someone else is that they'll repeat the same mistake, wasting more time and leaving another contractor in the lurch. In some contexts this is described as 'driving by braille' - turn when you hear the tires hitting the curbs.
Imagine that you are about to undergo major surgery, and the doctor is telling you he's going to get you out of there 'on time and on budget'. That's great as long as you survive and go on to live a normal life. In the same respect software development is core to a business process: it is the central nervous system of a business organism. Thus the business prospers when someone with an understanding of the system is working on it, usually this understanding forms over repeated maintenance and development cycles, which in turn requires a high degree of trust between the client and the contractor. Fixed date fixed price contracts don't work very well in this context - they have the potential to make a system that's running half-way OK into a disaster.
If these people are jerks you're better off walking away. If they are good people but inexperienced you should attempt to communicate with them and try to salvage something. You may also have discovered their operation is a mess and not worth bothering with.
In the bigger picture, look at any potential work from the standpoint of utility - is this 'line of business' and mission critical? If so, do everything in your power to arrange a longer term relationship, and bill on a time and materials basis. The upper limit should be a lot more than you actually expect to bill, but you should only bill for work you do, not the total amount allocated. Deliver components and upgrades frequently (weekly, for example) so that the user sees the effects of your efforts week in and week out. As you get close to the agreed limit, discuss extending the budget.
If the utility is marginal - in other words the customer could probably live without it if you can't deliver on the original terms, then you have to calculate a certain amount of risk. Can you afford to do the work without getting paid, if something goes wrong you can't do anything about? If the answer is no, don't commit. This pretty much falls in line with any other form of investment - don't put more into it than you can afford to lose. You might get a good education, but at some point you've got to make a living off your efforts.