В setTimeout Вы передаете аргументом свежесозданную функцию, а для любой функции, не привязанной к определенному объекту this === window. Поэтому, $(this) внутри setTimeout эквивалентен $(window).
В Вашем случае нужно "закешировать" this в другой переменной либо передать его аргументом setTimeout;
$("h3").bind("click", function () {
if ($(".content").length) {
var self = this;
setTimeout(function () {
moveObj.func.call($(self))
},
2000);
} else {
moveObj.func.call($(this));
}
});
RTFM