If you want to take credit cards online, you will need both a merchant account and a payment gateway. I am a fan of Authorize.net, which provides a very nice API for integration into your site.
As for a merchant account, you might want to check out
CDG Commerce -- they have the best rates I've seen so far. You can also get an Authorize.net account through them.
If you are accepting the credit card information directly through your site (as opposed to using a payment form provided by the payment gateway), you will also need an SSL certificate. Verisign, Thwarte and GeoTrust are the big players here. Last time I checked, GeoTrust had the best prices. Unfortunately, if you go with one of the options, some of your visitors' browsers may not recognize the certificate.