I posted this somewhere else but I'll put it here too..
I've been programming drums with computers for 11-12 years now. I started out using the sounds off a sound blaster pro card.. (yuk). Then I stepped up to an Alesys sr-16(dm4) programming it with a midi program called Trax. I picked up Sonar and some nice soundfonts last year and I've been using that ever since.
There are a few keys to getting "real" sounding drum beats.
You have to think like a drummer and know the basics (obviously) of good drum beats. Don't program things that would be physically impossible to play (ie. unless you have 3 arms or legs). Also keep things in mind like you almost always hit a cymbal and kick at the same time.. this comes from listening to a lot of different drummers.
The first step to getting realistic drum beats is to get a good set of drum samples.. All the programming and tweaking in the world isn't going to make a realistic beat if the samples don't cut it. There are some good drum boxes out there today BUT the best way to go is to get some layered soundfonts. Layered samples are where it's at! Older drum machines give you 1 sample for each drum.. no matter what velocity you trigger it, it always sounds the same.. just quieter. With layered soundfonts, changing the velocity of a hit will trigger a totally different sample. This is a breakthrough for us drum programmers!
Another thing to consider when making "human" drum beats is to remember that humans don't have the precision of a computer. They are constantly speeding up and slowing down and hitting the drums at different velocities. Downbeats are usually hit harder that upbeats so change the note velocity to reflect this. Also, real drummers don't hit everything exactly on the beat.. you can go in and push the snare hits just a hair past the beat and it will make a huge difference. Another thing that drummers tend to do is slightly speed up or slow down as they go into different sections of the song.. too much of a difference will ruin the song but a couple beats per minute can really add more life and vary the dynamics just a little more.
I hope some of these can help you. These are all things I've learned from years of programming.