Be VERY specific, I primarily used contracted and outsourced work and found that communications was the main problem. I wrote and communicated one thing and they thought I meant another. So what I learned to do was be very specific and breakdown each deliverable into small chunks so if there is a miss communication, the time lost is minimized.
Also I always contacted 1 or 2 previous customers (depending on the project size) to see how the operated. Specifically finding out whether they were able to deliver what they said. During the interview phase I would often quiz them about how they would design/accomplish a task to understand their thought process, treat it just like a job interview.
Another tip was to use IM, while I found they didn't want to bug you with a phone call. A quick IM from them when they have a question can avoid a lot of hassles.
Never make assumptions, especially when dealing with another culture. After making this mistake twice while outsourcing development to India, I never did again. Even simple terminology such as drag-and-drop can mean completely different things between cultures.