I actually think I got fairly lucky on the designer front. I think I it was successful because:
1) I already had the general UI layout I wanted
2) I was very specific on what I wanted (from color schemes to font sizes, etc)
3) Iterated very quickly - since I outsourced the work and they were in India, I would stay up late to be on the same schedule as they were and give them sub 5 min feedback whenever they sent out a design
Here was my general process:
1) Wrote the server code, agnostic of client
2) Started writing UI code in in Objective C. This was a mix of programmatic UI code and interface builder. But I designed the UI from scratch, didn't really do mockups just coded directly and refined by testing on device (imagining where I would have pretty graphics in place).
3) Recruited a designer on elance based on their portfolio. I would send you the link but they no longer seem to be active on eLance.
4) Sent them screenshots of my current ugly design plus detailed spec of exactly what I needed on each screen (i.e. background, a logo, buttons, icons, etc). If you are interested I can send you the spec I sent them (aleem.mawani at g m a i l)
5) Made sure they sent me high rez PSD files of the screens they designed.
6) Used photoshop to export individually the layers I needed. This was the most painful part.
7) Plugged those images into IB or code directly.