Disclaimer: MIDI is no substitute for a real performance, but it can certainly help with composition. But don't show off even a nicely-rendered midi piece as your final product, it'll make you appear unprofessional!
Disclaimer 2: This guide is by no means definitive. There are many ways to skin a [insert animal], so the saying goes. This is simply the way I've found best for my own situation, and perhaps yours (no money to spend on expensive hardware/software, but a passion for computers and for classical music).
Anywho... Due to the multitude of questions on these fora regarding "how to make computer music sound better," I'm going to stop replying to each individual thread and instead simply refer them to this place, right here.
To begin with, if you're using a scorewriter such as Finale, or Sibelius, STOP! These programs are for creating sheet music ONLY. You need to find yourself a real midi sequencer. If you want, you can have one with notation features as well--Apple's Logic programs do very nice midi work in the same style as GarageBand as well as some notation stuff. If you want something free (and open-source), look no further than Rosegarden, which also does some notation stuff (and will even export it in LilyPond format, too), but is for Linux only. That's okay, though, because it brings me to my next point...
Switch to Linux! All the real audio people are on Linux nowadays, anyway. But the most important reason to switch to Linux for audio work is JACK, which stands for JACK Audio Connection Kit. It's exactly what its name describes: it connects various audio sources--send this here, send that there, etc. If you have a midi keyboard and a USB adapter, you can plug your keyboard into your computer and can use JACK to link it to either any synthesizer or to Rosegarden.
Now, midi on Linux is kind of a tricky issue, but in general, you'll need ALSA (most distributions use PulseAudio, which you DO NOT WANT for midi work), a synthesizer (FluidSynth (and it's GUI, QSynth) is a good software synthesizer, though your sound card (any Emu10kx card works well in Linux) will work, too), and JACK to connect everything. A good guide to getting midi working fully in Ubuntu can be found here. Oh, and you'll also need a good...
SOUNDFONT. The SoundFont is just what it's name implies (this seems to be a recurring theme), it's a font for sounds. More specifically, it's a collection of samples for an instrument or a collection of instruments. The better the samples, the better the end-result will be. If you're using Ubuntu, the repositories have the excellent Fluid (R3) GM SoundFont; you can install it by doing
and it'll end up in your "/usr/share/sounds/sf2" folder.
sudo apt-get install fluid-soundfont-gm
Now that you've got your environment right, go ahead and play around with Rosegarden and get familiar with the interface. I'll post the next part to this guide (actually making the music) either later today or tomorrow morning.