The only thing I would like to add to this post is about meetings, iterations, and testing.
A lot can be said on this subject, I am going to try to make it brief and let you do the research.
Small iterations will help motivate, I suggest one week. Everyweek You get together to see how things have gone, and talk about what you will do for next time. Make them have input into what they will get done for next time.
Have a short daily meeting (about 15 minutes or less -- often called SCRUM meetings) to help identify what a person might be stuck on. If someone is stuck on a problem, identify it immediately, and get someone that can help (probably you) to work with them until it is solved. This removes risk as soon as it is found.
You cannot do enough testing! You need to be focussing on building automatic tests, that the entire project can go through. For instance I use Junit for unit testing each object in the system. I use ant as a build script and can test each piece as it is complete.
You implementation will vary, but "make" will work on all systems, and there is always a way to automate testing. Do it! Rebuild the code every day and what is broken can be fixed while it is fresh in the minds of those who broke it.
You must communicate more and get them more involved in what will be delivered (and shorten the iteration cycle).
Good Luck