Different parts of the world have different time lines on what is acceptable for giving notice etc. During the interview process, you should identify:
- Why are they leaving a current job?
- Why do they want this position?
- When can they start and if not withing 2 weeks, what is the cause for the delay?
Many people post questions on this site on how to delay starting dates because they are considering other offers. If you really want to leave your current job for this job, then why would you need such a delay?
Offer a signing bonus, and if the person doesn't work for an acceptable amount of time, they are required to return the bonus to the company. If the money isn't there, offer some extra vacation time after a week or so.
Another suggestion is to keep in touch with the applicant from signing the offer to the start of work. During this time, you should continue to sell them on the quality of the company, position, and manager(s). Invite them to formal or informal company gatherings. They may not be able to accept because of distance or other time constraints, but it shows you care and really want them.
Do a review of your rate of retention for similar positions in the company. The reasons could be the same for current employees leaving and those accepting offers, but declining before their start date. You have to make an effort to keep people that goes beyond competitive salary and benefits.
Edit: People often want that little extra time between jobs. As a counter-offer, ask them to start sooner, but then let them have a 3-4 day weekend shortly after starting. Finding out what people truly want is all part of getting to know them better and showing a willingness to offer compromises/be flexible. Many places don't allow new employees any days off at all for a certain grace period. It seems like getting them to start is more important then a few extra days off.