Use a callback. The callback will be called once the animation is done. The following code fades out the element. When it is fully faded out the HTML is modified and then it is faded in again.
$("#wantPlaceholder").fadeOut(1000, function(){
$(this).html(wants[i]);
$(this).fadeIn(2000);
});
Edit: Well, the looping could be done something like this:
(function myLoop(items, index) {
index = (items.hasOwnProperty(index) ? index : 0);
$("#wantPlaceholder").delay(3000).fadeOut(1000, function () {
$(this).html(items[index]);
$(this).fadeIn(1000, function () {
myLoop(items, index + 1);
});
});
}(wants, 0));