At one point last year, I was toying with creating a pool-league-management website - where a league operator could buy an account and plug his/her various league stuff (not the real specific stuff, just general team-oriented stuff) in, and let it do the match schedules/etc.
From poring over existing schedules, I figured out a combo of a consistent pattern, combined with some random number generation, that worked pretty well. It also took into account travelling leagues - making sure that any team, from week to week, would be home/away/home/away etc. It was a bunch of code and not easily explained.
Quick and dirty manual method, though:
Start off 1-2, 3-4, 5-6, 7-8, 9-10 (10 being your bye).
For following weeks, just start randomly pairing up teams, while keeping track of and accomodating home/away status for the previous week (if your league is a travelling league - if not, don't worry about this at all), and ensuring that no two teams play each other twice.
Once you're done with setting up your 9th week (with ten teams, even though one is a bye), if you've got more weeks, take the first nine weeks (or however many of the first nine you need), dupe'em to the end, and reverse'em - i.e. 2-1, 4-3, 6-5, 8-7, 10-9 for the first week, etc. etc.
(Edit: Rereading the original post, I see it's individuals and not teams - just to be clear, it doesn't matter whether you deal with teams or individuals, the same principles apply.)