Faulty as compared to what? I mean, yes, if you assume our expressed preferences are what we really want, then we're awfully (even spectacularly) bad at achieving them. If you assume that what we really want is survival, comfort, sex, food, and other things that contribute to our own genetic replication, then we're not faulty at all. We're actually quite good at optimizing for our actual preferences, even if we do sometimes become convinced that our preferences are something they aren't.
EDIT: I'm not trying to bring everyone down with first-world angst. This just troubles me. I may simply have to accept that, under my own defintion of the term, I'm just not a particularly good person.
What about this: Just because we have some desires, it does not automatically mean we are good at following them. And vice versa, just because we are not at doing something, it does not mean that we really don't want it.
For example if I want to eat pizza, but I can't cook pizza, I can't convince anyone to cook pizza for me, I cannot find a pizzeria, and I am too dumb to use internet to find anything of this... does it mean that I really don't want the pizza... or does it just mean that I am bad at getting it in this environment, but in some other environme...
Once you accept the idea that we have some obligation to try to help other people you are faced with the question of how to trade off costs for yourself against benefits for others. Questions like how much should I give?, should I avoid slave-created chocolate?, and should I become a doctor? are facets of this broader question of "how much should I give up to help others?"
The simplest approach to this, which comes pretty naturally to me and to most people, is to compartmentalize. You figure out how much you can afford to donate, whether there are foods you're willing to give up, how often to give blood or other body parts, and how much time you can spend volunteering. Within each category you do the best you can to find the right balance. For example, Alexander Berger writes:
The problem with this approach is that sometimes you can do better, both for yourself and for others, by trading off between categories. Say the positive effect of giving $1200 to the AMF is about the same as of donating a kidney. Perhaps if I looked at things in terms of having a policy for monetary donation and another for organ donation I might decide to give $X and also donate a kidney, but I'm really not that excited about donating the kidney. I might be happier if I gave $X+$1200 but kept my kidney, which would be neutral from the perspective of benefit to others.
I'm think the right framework for thinking about this sort of thing is to decide that there's a certain amount of happiness you're willing to forgo for the sake of others, and then do the most good you can within that bound. [1] This doesn't have to be even a very large amount of happiness; you can do a lot of good by giving future income raises to effective charity.
(This still doesn't answer the question of how much you should be willing to sacrifice for others. I don't have a good answer for that yet.)
I also posted this on my blog.
[1] Technically, this is the knapsack problem, which is NP-hard. But in practice the actually difficult bit is getting good estimates for the value of all the competing good choices and their likely effects on your happiness.