I use a weird way that seems to work really well. First, I have each player roll one set of ability scores using 4d6, drop lowest until we have 6 sets of scores. Then, I form a 6x6 grid of the scores, example shown below.
12 16 8 14 13 15
10 11 17 8 12 14
16 13 15 10 11 10
11 8 18 13 15 9
14 10 9 15 16 13
15 11 10 16 13 10
Then, each player can choose one row, column, or continuous set of six scores from the matrix, in any orientation (top to bottom, bottom to top, left to right, right to left) and place them in order on his character sheet. Usually this works really well- it gives the player some choice in his scores without being as nit-picky as point buy, but can also end up with some character with high or low scores in unusual stats given their class. Give it a try, it works pretty well.