Depends on how you are measuring effectiveness. From the perspective of either sociology or public policy, calling a treatment that doesn't work effective makes no sense. It's like saying that the only reason we have problems is because people are not always completely rational and benevolent in every interaction. That may very well be true, but what use is that? I don't understand what purpose that kind of comment may serve outside of making the commenters feel better that they do not share the problem.
The issue with the human body is that psychological effects are actually physical effects and therefore entirely relevant. The human body is not a mere automobile into which you pour gas, you push a gas pedal, and it just goes. That's the entire problem. You can't even treat a cat like that, let alone a human.
The psychological consequences are part of the equation and disregarding them and trying to pretend they don't exist is essentially taking out all the complex variables out and solving a simple equation nobody cares about. Kind of like programming GPS using Newtonian physics and then being surprised it's off constantly. There are more complex laws at stake here and we don't understand them very well. Moralization is effectively a cop out. "They're too lazy, stupid, or otherwise inferior to me to do this theoretically simple thing" is the same as: "I have no idea what's going on."
Limiting caloric intake leads to weight loss. So why are people not limiting their calorie intake? Then consider what kind of people are more or less likely to limit their calorie intake. So on and so forth. The equation becomes a lot more complex and also a lot more interesting.