I would say more often than not, when I write a letter or send a comment to management it is for praise rather than complaint. Often managers do not see the work their employees are doing, especially if it is a cashier or someone coming to your home. But there are occasions when I have had experiences that were far below the service advertised.
One of those, recently, was a cruise.
While most of the service was great, there were a few bad instances. Air conditioning was out in our rooms and the guest services staff seemed more than a little annoyed when we asked about the status. There were empty rooms with air conditioning but they refused to move us. There were several other annoying events and during an on shore excursion we were told we could take a later boat to an island. We waited two hours and apparently there wasn't another boat. Also the excursion was more expensive by booking through the cruise line than directly with the company.
After contacting the CEO I received 20% back on the cruise fare 15% off the next cruise booking and the excursion was refunded in full (their policy is to refund 110% for any shore excursion that is more expensive through the cruise line).
Don't be afraid to contact someone if you have had a bad experience. Without letting them know they are unaware of problems.
Always go straight to the top. You can usually find the CEO's name online or call the company for name and address. If that fails, contact your local library, they can usually track down information for you.
Always be polite and professional and also state what you enjoyed and service that was good.