I echo the comments of many on this board. While the solution you choose will depend on your particular situation, here is what I found when I had to choose a merchant account + payment gateway a while back.
Here are the questions you should answer as you get started:
a) Do you want the transaction to execute on your site? Or, are you OK with the transaction completing on a 3rd party site? If the latter is OK with you, Google Checkout may be your best bet. Fees are very low (2%) and you get credit for your AdWords account.
b) If you want the transactions to execute on your site, you definitely need a merchant account. There are many providers out there. However, you may want to look around. Ask for all fees. The fee they mention when they sign you up (say) 2.12% is for "qualified" cards. You should ask what the fees are for "mid-qualified" or "non-qualified" cards. These will be much higher: typically 2.5% to 3.5%. International cards are a completely different thing...I hear the fees can be as high as 5-6%.
When I did my research, I was initially swayed towards Nova (Costco's preferred partner). Then you read about them at epinions.com and you find that they are terrible. So I stayed away from them.
The cheapest merchant account I have been able to find (for a beginning ecommerce provider) was at Chase Paymentech. If you use Microsoft Accounting 2007, you can sign up from within the software or else call them and ask for similar rates. The rates I remember were like 1.75% for qualified up to 2.5% for non-qualified, $0.15 for transaction fee, $10 minimum per month. These are for Visa/MC.
You also need either a payment gateway or else you need software to handle to handle the payments. Authorize.net charges $20 per month, $99 setup fee and $0.10 per transaction. You can also use software to connect to the payment processor directly, if you are knowledgeable about programming.
Another alternative for those that are cost conscious: Write your ecommerce software to work with the payment processor directly using libraries from nsoftware and other providers. More work is involved, but it is simple, and you pay a one-time cost for development but save the ongoing cost of monthly fees.
Oh one more point: Read the fine print you get from your bank when you open your merchant account. You get poor rates if you do not do CVV/CVV2 (though you are not allowed to store it which means you are out of luck if you want to do recurring payments, for example), you need to submit address/zip, though there is no guarantee that your payment processor will use it.