My groups tend to use 3d6 or 4d6 drop the lowest down the line (sometimes with a swap, sometimes not). But as you are asking them to envision their characters before they roll their toons, then these methods will not work as the stats rolled pretty much determine what the party will be (and leads to some really cool party composition IMO, but its definitely more and oldschool approach).
If you want your players to have toons more in line with the persona's they have built then you will need to use a more fluid, less random system. Some posters have suggested various die rolling methods, and those are always nice. I am a fan of 20-24d6 recording the rolls individually and placing three in each score and dropping the rest.
I have also used arrays in the past. Which basically means I pick some scores that I think are a good power level (and maybe even put a low one in there, like say an 7-8) and let each player assign those same scores to their toon in whatever order they wish.
Point buy can work as well, but it does lead to a little bit of min maxing. Here are a couple of variants on the standard point buy that may add a little variation to the scores of your group:
Variant 1: Write down the point buy chart on a scratch piece of paper, and as a player buys a score, scratch it from the list, so that the same score may not be purchased more than once. If a player has left over points at the end they lose them. This may seem odd, but you may find characters lowering some of those really high stats to make sure they can use all of their points or raising a stat they would not other wise raise. If you want to get really serious with it you can randomly strike 1-3 numbers fro the list before the player even starts picking their scores (we usually roll ours out in the open as a group). I find that this method gives all of my experienced players a really good challenge to making a character. The more points you give for a point buy, the more challenging this variant is to use.
Variant 2. Use a fairly low point buy (I am talking turnip farmer low 12-18 points is a good range). Then once the scores are generated and racial bonuses applied, pull out your d6 and roll it several times for each character with a 1 representing STR, and 2 representing DEX, and the numbers following the scores as they are listed. Every time a score is rolled you add 1 to it. Roll as many times as you need to (I usually roll 4-6 times per character depending on how many points I gave them to start with). This gives the player an amount of control over their base stats, but lets a little randomness in as well (Don't be afraid to set a cap on what the +1 bonuses can be added to. I personally don't let random d6 additions tack a score above 20 after racial adjustments).
You can also reverse this variant and give the players a goodly amount of points to start with, and then roll your D6 when they are done to remove 1 point from a stat per roll. How many times you roll is up to you, but it should be the same for each player. You can also set some guidelines for how the scores can be hit if you are feeling particularly care-bearish (some good guidelines are to not allow a score to be taken below a certain number but deductions (I would use 7), and to allow the character to choose a special score they don't want hit and then say the score may only be hit x times (with x being a number between 1 and 3, depending on the randomness factor). Beware of these variants however, while they are fun, you can still end up with some disparity in overall power level in the party using them (though IME, it is never really that great).
3. My personal favorite is this:
(this step requires that the party not assign roles before starting but rather just make them, and it will require some index cards and a hat or box or something to draw them out of)
Step one: have the party decide the roles the party will need
For instance they may decide as a group they want a Paladin Tank, A Cleric, A rogue, and Sorcerer. Write those classes on the index cards and place them in the hat.
Step 2: have the players draw a card and ask them to put a flaw down on the piece of paper with the class. This can anything from The sorcerer is feeble due to never got a workout, to the rogue is nearsighted. Put the cards back in the box.
Step three: have the players draw them again and write down a quirk about the character. This should be something that is out of the ordinary for a member of that class, such as the paladin wishes he had been a wizard, or the sorcerer is a disco master. Put the cards back int he box.
Step four: Pull the cards back out randomly and ask each player to assign points using whatever point buy is appropriate for your game taking into account the flaw and the quirk listed on the index card for that character (you can look over them when they are done if or help your players with the assignment if you are unsure of their willingness/ability to do so. Write the stats on the card and put them back in the hat.
Step five: shuffle them and pass them out randomly. The card that each player has is the character they will play. Let them finish making the characters from this point. If you are feeling really saucy you can make them randomly roll for race, but it is not necessary (and sometimes can really hurt a toon depending on the race rolled).
This method makes sure that the party composition is thought out, and that that powergamer in your group got to use his powergaming skills. But his munchkined toon might be in the hands of the non-powergamer
I hope your game goes well.
love,
malkav