I'm a so-so to "good" public speaker. I used to be a terrible public speaker. I'll probably never be a great orator or Steve Jobs, but I'm pretty happy with my presentation skills. In group settings, I'm often the one chosen to give the public presentation.
Some things that improved me:
1) My university undergrad CS program required a semester of public speaking. Everybody hated it. It's probably one of the top 3 most important classes I took. If you're in a school that doesn't require it, take it as an elective.
2) I had a teaching job for a few years. Getting points across day in and day out, and trying to drag a class along of people at very different learning speeds teaches you very quickly how to project and enunciate so people can hear you well. Watching the faces of, and talking to, the people in the back rows becomes a very important speaking tool.
3) To deal with stage fright, I learned to mentally "not care" about giving the talk. It's hard to explain, it doesn't mean "not caring about doing a good job", it just means to adopt a viewpoint of detached apathy. Before I learned how to do this, even small stumbles would send me into a panic state which only made it worse ending with an avalanche of stutters and tied tongues. Detached apathy turns those little stumbles into such unimportant things that I don't even know they happened until I listen to a recording of my talk or see myself in a presentation.
4) Practice your speech. Because it's important to look up every once in a while in order to project. Practicing your speech helps you do that, instead of looking down into your note cards or your script. I don't practice it relentlessly like Steve Jobs or President Obama. 2 or 3 runs through is usually good enough for most of my purposes. But it helps you keep your focus on not caring.
5) Practice giving speeches. I haven't done it, but I've heard lots of good things about Oration societies like Toastmasters. In my case I got plenty of practice while teaching. But for those people who don't have that option, this is a great option. Nothing gets you used to the routine of giving speeches like giving speeches.