There are two separate issues here.
First, typically the laws -when you rent to someone in your own home- are more favorable to the landlord. You can simply notify the tenant of their non-compliance with the terms, and begin eviction. In New Hampshire, the Fair Housing laws don't even apply to selection of a tenant if the space is in your own home. You don't mention your state, so you should check with an attorney who works with landlord tenant issues to be sure of where you stand.
But the second issue is this: You have tolerated this bad behavior since the beginning. From your description, the tenant has been in control all along. When you allow the behavior to continue and don't insist on payment for damages, or require adherance to policy, then you are saying you are ok with it.
You definitely don't have to allow him to stay, but you'll have to notify him appropriately. And you don't have to wait to the end of the term of the lease since he has violated the terms of the agreement. But you'll have to do it properly depending on the laws in your state. This will make sure that he doesn't have any grounds to win in court. But again, since the rental is in your house, you should have no problem.
Stop allowing this and take control and get rid of him.