No es algo "normal" hacer un return con un echo dentro, mejor asigna el resultado a una variable y concatenalo
Código PHP:
if(in_category( 489 ) || post_is_in_descendant_category( 489 )){
$valor = get_post_meta($post->ID, 'vids', true);
return '<img width="150px" src="http://i2.ytimg.com/vi/'. $valor .'/hqdefault.jpg" class="align'.$align.' wp-post-image tfe" alt="'.$alt.'" title="'.$title.'" />';
}
else {
return 'No hay imagen';
}