Start with traditional methods of communication. If I have a problem, I always start out with traditional methods of communication. A phone call or an email can certainly go a long way. The reason I like starting out with a phone call is that you are giving the company an opportunity to resolve an issue without causing a fuss. Most times, I end up requesting to speak with a manager or supervisor. It seems like the first person you talk to in customer service is never properly equipped to offer a suitable resolution. A few minutes on hold to wait for a supervisor can go a long way.
If you're unable to achieve satisfaction through traditional methods, it may be a good time to start using Twitter and / or Facebook. Personally, I've had good success in using Twitter, and I've never had to go further. But if I did, you can rest assured that I'd be targeting the company's Facebook page. Not to sabotage it or yell and scream, because these rarely get you anywhere whether online or in person, but to share my experience with others. Remember, you can possibly get in trouble for defaming a company. You can't get in trouble for speaking the truth and sharing truth with others. The important part is that thanks to the internet, a single unhappy customer can cause a LOT of trouble for a company, so there is a lot of incentive to resolve problems with customers before it gets out of control.