Here's an idea that popped into my head today. There's absolutely nothing wrong with traditional 3d6 in order ability scores, but if you want to give players a little more say in how a character turns out and don't mind a little extra time in character creation, this method might work.
Roll 2d6 in order for each ability and record the scores in pencil or on scratch paper.
Then, roll 1d6, one at a time. The player gets to choose to which score to add each result. The choice must be made in order, before the next die is rolled. One die is added to each score in this way, so that each totals 3d6.
Do you shore up a low score to avoid a terrible penalty, or go for a bonus on one of your better ones? If you roll a 5 on your third die, do you add it to the 12 you got the first time around for a 17, or stick it somewhere else and hope for a 6 to come up later?
While there's a lot of chance involved, it's less likely that a character will have an extremely low score, unless the player actively chooses not to bolster them with good rolls from the second phase of dice-rolling. If you have an ability that you really hate to have a low score, you have some power to mitigate it - you may end up only average in it, but at least you're not dismal.
Of course, neglecting those low scores gives a little better chance of getting a very high score.
It's pretty easy to get a very average character this way. There's still a fair bit of luck involved, but deviations, either high or low, are to some extent the result of player choice rather than pure random chance. That might be a good thing. Sometimes it's more satisfying to know that your character's strengths and weaknesses are at least partly the result of your own choices.