Используй функцию delay(задержка в миллисекундах) перед анимацией.
function show_chat() {
//Тут тоже добавляем анимацию opacity
$('#chat').stop().animate({opacity:'1'}, 200);
$('.chat_over').animate({bottom:'20px'},200)
$('#top_chat').fadeOut(200,function(){$('#bottom_chat').fadeIn(200)})
}
function hide_chat() {
$('.chat_over').animate({bottom:'-390px'},200)
$('#bottom_chat').fadeOut(200,function()
{$('#top_chat').fadeIn(200, function(){
//Вот оно
$('#chat').delay(2000).animate({opacity:'0.5'}, 200);
})})
}
И еще почитай про функцию stop и ее использование, может пригодиться.