I am just curious... of those of you who have complained about cold food and things you did not like... did you mention this at the time and give them the chance to fix it? IMHO, it is not entirely far to complain about something like that, or tell others not to eat there, if you did not give them the chance to make it right.
I have never had a "bad" experience eating at DL even though we practically live there and I have been a passholder for over 10 years and eaten there more times than I could ever count, at every possible eatery. The reason I have always had a good experience, in part, is because when something is wrong I politely bring it to their attention and every time it has been corrected to my satisfaction. I am not demanding and do not get angry, but rather let the waiter know nicely that my food was cold, or I simply did not like something that I ate and could I order something different instead. Only a very small number of times have we ever sent something back for just plain not liking it, or it tasting bad, and though we offered, we have never been allowed to pay for the replacement order. Cold food gets very quick attention on the rare occassion it happens to us.
Disneyland pays very close attention to their guest satisfaction and in my opinion, more than any other random restaurant we have ever eaten at. So much so that I have even been asked on occassion by a waiter if I did not enjoy my meal or if something was not right with it, when it did not seem like I was eating very much (I have a toddler - enough said). On those occassions when we have slow service we go with the flow though, this is a theme park afterall and if you go when it is crowded, you have to expect a little bit of that.
As far as character meals go, I think it is a matter of perception when we talk about how long a character spends at our tables and some expectations being too high. I go to character meals expecting the characters to come to my table at some point, and spend about 3-5 minutes with us. If we get more, great, if not, I feel that we got what we paid for. I have been going to character meals long enough to know that they cannot make it to every table when the restaurant is full if they are spending 10 minutes or more with each party and 5 minutes is pretty average for each character to spend at your table based on our experience. The less crowded the restaurant is, the more time they have of course, so planning to eat at off times will often buy you some extra time. If you are planning to go to a character meal and expecting 10 minutes with each character, then you are setting yourself up for dissapointment and of course you will be unhappy with your experience, because it was not what you expected, which is entirely fair and understandable. But think about it this way, if you stand on Main St in line to see Mickey, and there are a ton of other people in line, Mickey is going to pose for a photo, sign your book, and move on to the next child pretty quickly. IMHO, in that situation the characters are usually much more rushed, as opposed to the more casual atmosphere in a character meal where there are several characters making the rounds and there is not a line of kids staring at them waiting their turn. You also have the advantage of not having to wait in a separate line for each character, but rather they come to you. Usually you find a wait of at least 10 minutes to see characters in the park, if you did that times 5, it would have taken you almost an hour to see the same 5 characters that you'd see in a character meal in an hour, but you are also having a meal at the same time and did not have to stand in line. When you look at it that way, they are worth their time (assuming you are not there for 2 hours - that was a really long time). And yes, you are paying more for your meal for the convenience of having the characters come to you in a nice air conditioned room rather than standing in line. You could accomplish the same outcome much cheaper in the same amount of time by grabbing a corndog on Main St and then standing in line for 5 or 6 different characters. It all comes down to a matter of preference.