Видимость элемента изменяется в конце анимации, то есть, в вашем случае, через 400 миллисекунд. Получается, что вы проверяете условие видимости ещё до того, как элемент #filter появится или исчезнет.
Используйте callback функцию по завершению. Вот так код заработает:
$('.dop').on('click', function () {
var $btn = $(this);
$('#filter').toggle(400, function () {
if ($(this).is(':hidden')) {
$btn.html('Показать дополнительные параметры поиска');
}
if ($(this).is(':visible')) {
$btn.html('Скрыть дополнительные параметры поиска');
}
});
});
Не забудьте, что код должен выполняться после загрузки DOM.