Yes, all of the above. But many employees leave because of bad managers, or overly critical managers. They don't like working for them, so they quit.
This is true whether you're at a hotel, a retail store, or at a high-tech outfit (it's been studied). Train your managers to treat employees well, and you'll see an improvement in your retention figures.
SOURCE: From a speech by John Sullivan, San Francisco State University, at a conference on Recruiting & Hiring in a Tight Labor Market: New Practices in Recruitment & Selection, May 5-6, 1999.