So your proposed fix is to slap an employee leaving a company with a "training fee?" How would this be quantified? Would you be ok if you quit your current job, and you were charged $3,000 for "training?"
It doesn't work like that. You offer an employee a promotion, an require in return for this promotion training/education. How this is quantified is determined on the education you receive, a 3 your university-level course is more expensive than a 2 day in-house training course that doesn't provide a diploma of course. Say the cost of the training you follow is 3600$, and in return you have to stay for 3 years. For every month you stay after completing that training the company will subtract 100$ from your debt. However, if that promotion you receive also comes with a 300$ raise you'd be a fool not to accept it unless you plan on leaving soon.
Here in Europe this system isn't all that uncommon though. I received a job-offer where they demanded a 30,000€ in-house training (that would have lasted just a week), and I had to stay there for 3 years and I wasn't too sure about the job so I turned it down. My wife received what I believe was an 12000€ training that was recognized in her entire branch with a 2-year obligation to stay but she was bought away by another company that took over the 'debt'.
It really provides a save way for companies to train and invest in employees. Something that benefits everybody.
Yes, working conditions and creating a good environment is the most important thing. But I have seen people skipping jobs within a few months due to various reasons around me, and well... that is quite the waste of training and such on newcomers who were hired straight out of college. Can't blame a company for not wanting to do that too much.
Of course it also depends a bit on the size of the company. If you have actual training programs, your solution might work for some. But in most companies, the training is just being on the job and your manager or co-workers showing you the way for the first weeks or months.
I wouldn't call having a manager or co-worker showing you the ropes 'training' or 'education'. And yes, a new employee isn't as productive yet as somebody with a bit more experience, but this isn't the issue. It sucks for an employer to have a new employee bail after a few months, just as it sucks for an employee if he is fired/downsized shortly after taking his new job, especially if he left another job for it. But having 2 months experience at company x won't make me more desirable for company y, if anything they might be hesitant to accept such a job-hopper. That initial on the job training is most likely very specific and not worth anything to anybody else.
Investing in an employee is giving somebody with potential and some experience in your company the chance to grow. Send him to classes to become a manager, give him time to learn a new programming language and certification, teach him how to weld, send him to be educated in financial regulations, stuff like that makes the employee more valuable and allows him to do stuff he couldn't do without it. Those are the serious investments that would also open up new career prospects outside of the company and make it worth it to agree on some longer term commitment from both sides.
As someone currently looking for my first job out of college with a master's degree, it's downright infuriating how many "entry level" jobs require 2+ years of experience on top of your education.
Apply anyway. It's what they hope to get, not what they demand.