you don't simply "fire" people for performing below expectations. do the extra legwork, and find a way to get them properly "laid off", ie, "eliminate their positions" -- which shouldn't be too difficult here, as after all you say you'd rather hire more senior people -- so they can (1) get unemployment benefits, (2) roll their insurance off into CORBA if at all possible (or the equivalent of you're not in the U.S.), and (3) have at least a theoretical possibility of rehabilitating themselves and getting another job.
"firing" per se is just plain vindictive, and seriously endangers their ability to look out for their physical welfare on the short run, and to right their course (in terms of finding a career that's better suited to them) in the longer run
I know that you aren't particularly concerned with their welfare (you sound like you're basically fed up with these people, and couldn't care less). but the bottom line is that you still have to recognize that the company shares at least SOME responsibility for the situation. (after all, who hired them, anyway? was it, umm... you, by chance?)
and also, treating people humanely just happens to pay (considerable) dividends. as in, the morale of the rest of the team, your company's reputation (and your own reputation).
i've seen the (lingering) after-effects of letting go of people gracefully and magnanimously, and of doing the opposite, many, many times. it's well worth the money to do these things properly (and humanely).
If you're not sure you've built an inspiring, learning environment where everybody feels driven to do their best, are you sure a) it's them, not you? b) anyone you'll hire will do any better?
The way you've worded it though, it sounds like they are a bit rubbish. Maybe it's the kindest thing, it's painful all round if they're trying and failing.
I am thinking about tough decision now, and so far I am going to fire those average people and hire 1-2 great developers instead.
On the other hand a developer could be average due to lack of experience, which is something that can be remedied by time and training - code reviews can help, as well as a reading list etc. We all have to start somewhere. Give those that show promise - but lack experience - some guidance.
It also depends a lot on where you are in the development cycle. Are you mainly doing maintenance work, bug fixes, minor feature additions ? An average team should do fine.
Where you don't want mediocre developers is in the early stages of a big project - bad design decisions and poor programming practices can make later development a nightmare.
I'm working on such a project right now and it's highly demoralizing - every day I find a new WTF and I just don't have the time to refactor everything - my recommendation at this point is to scrap the lot and start over, but that's not likely to happen. That's the result of mediocre developers in over their heads without a clue, and it can have a huge negative impact on your company's productivity and bottom line.
Here you can't fire them "for cause" and deny them unemployment benefits (which will increase your payments into the system going forward) but these sound bad enough that it's probably worth it.
dev 1. very slow, but solid. Need constant guidance to solve problems. However, can dig into boring/weird problems and reliable person. dev 2. distracted by interned and have problems with focus. Knows a little about many things, do many mistakes, but trying to improve. dev 3. was weak indeed from the beginning, but doing much better after several months. He is 31 and I don't think he will become great developer eventually.