You are certainly not a bad person, it is obvious that you are sensitive, and you don;t want to hurt someone you care about, but who is not right for you.
When ever you start to care about anyone, there is pain at the end of it. That's a fact. You can;t avoid it, but you can reduce it. Give him the respect of finishing with him face to face, but don't tell him about thie other guy. he doesn;t need to know, and why make things worse for no good reason.
Yes he will be hurt, and so will you, but in the future he will come to see that you did what ytou did for good reasons, and that will help him to get over you.
As for yourself, don't be hard on yourself over this. You haven't hurt anyone on purpose, and you are doing your best to do the right thing for everyone involved, yourself included.
Take a deep breath, get it over with, and then look forward. You are obviously a good and caring soul, you deserve to be happy with the right person, and you will. This is not a nice experience, but it is a valuable one. You matter, a lot, so don't make yourself miserable under the illusion that doing so to make someone else happy is the right thing to do. It will always end in failure. Stop this failing relationship now, and give yourself some time to heal, and then see what else life has to offer you.
There is someone out there for you.
Promise.