I have had a couple lease breaks from tenants who wanted to stay "years" and then stayed months. I have also had people insist on going month to month so they could find a new place, only to still be here five years later. Some advice:
1. Never put much faith in what people tell you as far as plans to stay. Sometimes people even exaggerate the time they plan to stay as a way to get accepted. I am honestly more suspicious when people say they want to stay long term.
2. Never write a lease beyond one year. You want flexibility to not renew, sell or raise rent within the next year. Maybe they seem great, but the best con men feel like your best friend. Never lock yourself in.
3. If you have a no pets policy you should have said no to the cat. Don't even think about it or consider their request. Sorry our policy is no pets. If you allow pets, charge a pet deposit and fee. If the cat they are getting is a kitten or from a shelter, expect spraying or pee on the floors.
4. Have a lease break policy, either in your lease or ready to share with tenants when they ask to break a lease. This happens and there is no point in fighting it, just work with them to get compensated for the trouble.
I would send him a letter explaining your position on lease break. Tell him you were very caught off guard when he said he was looking for a house to buy after he just signed a two year contract with you. Explain that the contract is legally binding and you expect him to fulfill his contractual agreement. That means he shouldn't be house shopping for at least 22 months. Explain that you had multiple applicants and his interest in staying long term was a deciding factor in selecting his application. You could even consider offering to modify the agreement into a month-to-month agreement. You increase the monthly rate $100 (or whatever) and tell him you will redraft a contract at the new rate. In other words, either he pays his 2 year rate and stays or you write up a new agreement at a higher rate and he can leave when he wants.
Some leases have no verbiage around lease break and others spell out contract cancellation fees. Legally you have no way to force him to stay the full two years. If he moves, you are required to make best effort to release the property. You can collect rent while it sits vacant and releasing fees.
I would write up a lease-break policy and be prepared to share it with him. There are two approaches I recommend:
1. Firm break. Tenant moves out on X date and they pay a set lease break fee. Usually that is 1-2 months worth of rent and 1 months rent as a releasing fee. Total cost is 2-3 months rent in that case and you keep the money whether you rent it out in one day or it takes you six months.
2. Tenant is responsible for rents while vacant plus a leasing fee equal to one months rent. In this case the tenant is responsible for paying rent up until the day someone new moves in plus they pay one months rent as a leasing fee. The leasing fee covers your time or the cost to hire someone for leasing.