term_description()
returns a string, which might be empty.
So the test should be:
$term_desc = term_description();
# debug
print '<pre>' . htmlspecialchars( print_r( $term_desc, TRUE ), ENT_QUOTES, 'utf-8', FALSE ) . '</pre>';
if ( '' !== $term_desc )
{
echo "<div id='term-desc'>$term_desc</div>";
}