Step 1: Decide what car(s) you want to buy, down to the color, trim, options, etc. Type it all out in concise list form.
Step 2: Visit Edmunds.com, etc and get a general idea of local fees, taxes, and costs.
Step 3: Find the dealer websites within 120 miles or so, and write down their "Internet Sales" and "Fleet Sales Manager" email addresses.
Step 4: Compose an email to each of the email addresses you wrote down. Say that you are sending this out to several dealers within 120 miles and you will be selecting the lowest cost for the following list (which you created in step 1). Ask them to give you their "walk out the door" price. This price will include all fees, taxes, costs, etc.
Step 5: Wait. Maybe 30% of them won't reply, but that's OK.
Step 6: Take the lowest quote and tack it to the wall. Send another email to the next 2 or 3 lowest quotes saying that the guy tacked to the wall is quoting you $true_value (don't lie). See if they come down in price.
Step 7: Pick the one.
This has worked 3 times for buying a new car. No haggling or even stepping into the car lot until negotiations are done. You don't necessarily have to take the lowest quote (it's nice to pay a little more for a dealer closer to home) but it sure does drive the price down.