If you have some decency left you should leave him and let him know why are you leaving him. I see according to your comments that you take the fact that you didn't cheat on him for a year like a feat of strength, like you fought hard not to do it. Does that one year negate what you were doing for 3 years prior? People who cheat do it for variety of reasons, your however seems to be habit and boredom. You seek validation by men and cheating is the way to go about it.
You say you love him alot, well obviously not enough to NOT cheat on him. As someone who has been cheated on I know what harm it can do, and sorry, but I think repeated cheaters do not deserve a chance with the person they have cheated on for so much and so long. And I see you were even careless about it not using protection and catching and STD. I know my comment will sound judgmental but it may be an eye opener for you. I honestly don't see you being faithful in the future and holding on to the poor fella is for sure not fair to him. Would he want you if he knew what you had done? And trust me, the truth always finds its way out, he will find out sooner or later and then you're in shock of a lifetime.
Well, maybe you don't deserve him, but only let him go if you are unwilling to let the past be the past.
Only if you feel you will not be faithful in the future, will it be time to end it. Don't end it just to atone for your past misdeeds. And stay silent about the others in your past, there is no point in hurting him further even if you think it will make you feel better to confess. It won't make *him* feel better, and that is the point. You need to care for him.
The question is, where are you on the relationship overall? Do you think there was a reason you cheated? Cheating is not a good thing, but one does not just cheat out of the blue ... what was behind it? Is that still around? You might be looking at letting him go for other reasons, not just the guilt about cheating.