Over past 5 years I have outsourced quite a few projects ( small to medium ).
Here are few points that have made me wiser. ( all through trial and error.) but now, I swear by each and every one of these...
1) As you will be entering a contract, make sure your requirements are as detailed as possible ( and numbered ). Detailed requirements will get you bids from contractors who are serious about accepting your work. If you are serious about detailed requirements, experienced contractors will recognize it and put time in considering your bid.
2) Agree to a realistic deadline but be VERY firm about deadline in your contract bid. ( extend it later if required, but convey it initially that you are firm about deadline. Lot of tryout contractors will disappear once you mention this. )
3) Schedule and make it mandatory to get delivery of code in milestones of 1 to 2 weeks each ( max 2 weeks, not more ). This will help you a lot in figuring out if the contractor can deliver on time with quality or not, and allow you to use the exit clause to cancel the project and recover your funds. Make this point very clear in your contract : If more then 1 or 2 milestones are delayed or not upto required quality, you have right to cancel and recover you money in full. This really keeps the contractor honest.
4) Use a tool or search engine ( like http://www.copyscape.com/ ) to help you figure out if the code or document being provided is copied from one or more sources. This saved me in 2 projects in a year, and I was able to request cancellation of both projects as I was able to provide proof. It is common for contractors to think they will get away with plagiarism.
5) Request a sample of actual work (for projects over $500. ) I have found contractors who are willing to give actual samples of your projects are best bets. Serious contractors will give small sample without hesitation. The best contractor I came across, provide a short actual working sample along with a reasonable bid. I accepted his bid without negotiating and was 100% x 10 times happy with his work. I gave him a bonus without asking and was happy to give repeated contracts after that.
6) For complicated or time sensitive projects ask the contractor to put a small % of project amount into escrow ( say 20% of what you would pay him/her ). This is essential for projects which are important to you. Without this the contractor is free to abandon your project midway( as it happened to me more then once ), and your schedule will be in mess.
7) Though I have found couple of good contractors with the lowest bids, but usually it is a waste of time to select the bottom bids. Contractors with Mid range bids are lot better.
8) Skip the bids of any contractor who does not take time to provide tailored reply to your project bid. All contractors who provide canned replies are waste of time.
9) Make sure the contractor can comfortably communicate ( written as well as verbal) with you in the language you are comfortable in. I had to abandon a project due language problems. Specially if you are giving a long term or medium+ project, talk to the contractor over phone/voice chat before accepting the bid.
10) In the contract, make sure to add a support period after delivery of the full project ( few weeks or month based on size of project.) Keep part of payment ( say 10% ), to be paid after the support period is over.
Hope this helps.