Just do it. Take into account the problems that might come from it and prepare your business, but just do it. If you've thought about it, more likely than not that person has no business working for you. Are they aligned with your core values? Are they willing to learn? Do they put the company first while at work?
You hate to fire people. They might have family, or constantly be scraping by, or any number of things… so fire them so that they may actually find a career rather than a job. You aren't doing them any favors by allowing them free reign. I'm an introverted nice guy, so I have trouble pointing out peoples' faults to them and prefer to avoid conflict- well, it isn't very nice to have someone work for you for five years of their productive life only to have them learn nothing and have no possibility of moving up. If you like someone, set them free.
Here's what you're doing by paying an employee to do a bad job: you're reinforcing the fact that they can get paid to do a bad job. You're also reinforcing to other employees that doing a bad job still pays, and that while they were passed over for a raise due to lack of funds, you're wasting money on someone who doesn't put in the same effort they do. It's a morale suck and it's a giant middle finger to the future you's retirement fund. You're a small business owner- you don't have the money or the time to deal with people who are not compatible with your company's future.
Fire them and BE HONEST. Tell them why- their job performance was sub-par because they didn't take constructive criticism and become better. Their skills were lacking and when direction was given, they didn't follow it. A role was given to them and they didn't take initiative. They don't align with the company's core values. Make sure you're within the lines of honesty and whatever your state's rules are on whatever "snowflake protection plan" the legislators have come up with, though. Trading a headache for a headache is silly.
Some employees will just say "man, these guys are so lame and I can do better." Let them. Both of you will see more success- that's fantastic! These employees just weren't a good fit.
Some employees will be genuinely shocked. You failed these employees- you didn't counsel them, you didn't get rid of them after a trial period, you didn't do any number of things to give the clueless a clue. You weren't being nice- you were stringing them along. You allowed them to develop bad habits and you cannot afford to fix what you created; you're killing Frankenstein's monster- this is not wholly ethical and is the reason why you need to take the time to evaluate your employees, even if you've fostered good personal relationships with them. Don't let things get to this point.
Some employees will file for unemployment. Fight it if they were counseled and you have time, let them have it if you strung them along. You're paying into it either way.
I regret the fact that I kept more employees on when I should have just fired them. Thousands of hours of reworks over the past ten years- tens of thousands of dollars of lost revenue. Shame.
Take the knowledge you've gained and take people on for short stints- if they don't work out, let them go. One week of training is easily replaceable- ten weeks is a waste. Two years is a goddamn tragedy.
Be fair. Be ethical. Above all, though, be honest with yourself.