Hide custom Woocommerce taxonomies when empty

get_the_terms() returns FALSE if there are no terms in the taxonomy, so you could check for that.

$authors = get_the_terms( $post->ID , 'product_author' );
if ( FALSE != $authors ) :
    // Do something
endif;

If you want to avoid displaying empty terms, ie. terms that have no objects attached to them, use get_terms() instead, because you can pass a parameter to filter them:

$terms = get_terms( 
   array(
     'object_ids' => $post->ID,
     'taxonomy' => 'product_author',
     'hide_empty' => TRUE,
) );