I have quite a bit of experience with Elance, and none with Odesk, but I think the communities are similar enough that whatever applies to one site also applies to the other.
I'll second Blake's input w/r/t project size. Break the required work into small tasks.
1. I would recommend paying on a per-task basis. Anybody who's got experience will likely give you an estimate based on the number of hours they think it will take them to complete the task. But paying for the task and not by hour places the risk of overrun costs with the contractor, and not with you.
2. Lay out as much as you possibly can, in as detailed a fashion as possible, before work commences. Ideally, you'll have all the necessary materials (spec, wireframes, images, ect.) on hand prior to the estimate (though some devs will prefer a simple high-level spec for estimate purposes). The more you leave open to interpretation, the higher the chance of a back-and-forth between you and the contractor. This will eat up your time, and may result in overruns. If you get into this situation (I'm speaking from experience here) you may find yourself with an incomplete product, and a developer who refuses to do any more work without more money.
3. Again, more detail is better. Also, if you have a designer you're working with, I'd recommend you get delivery of all of the necessary visual assets prior to having the contractor start development.
Here's my general take on using Odesk/Elance developers:
Their incentives are not well-aligned with yours.
- They simply want to deliver a product that's good enough to ensure (i) that you pay them the agreed upon amount, and (ii) that you don't hammer them when rating the quality of their work.
- You want to develop and deploy a top-quailty product--one that's gonna get noticed in the crowded world of mobile apps.
For this reason, I'd recommend Odesk/Elance for the development of a prototype/MVP, but after that you're going to want to team up with somebody who can handle your product's technical requirements.