I feel your pain. I've had so many problems with roommates in the past two years, its been ridiculous. I know from experience that if you talk to them about the situation they're most likely going to get defensive. Its really a catch 22. You deal with the stuff happening or you talk to them and run the risk of getting them angry.
But in your case if your the one who has signed the lease and they haven't I think you have the upper hand. Let them know how you feel and what changes you want made. Then if they don't change you can tell them to leave. It sounds like you've been more than kind helping them out.
good luck