Change the last separator in the_terms

$terms = get_the_term_list( $post->ID, 'post_tag', 'Tags: ', ', ', '');
echo preg_replace('/^(.+),([^,]+)$/', '$1 &$2', $terms);

Explanation for /^(.+),([^,]+)$/:

/     - delimiter
^     - string beginning
.+    - 1 or more characters
[^,]+ - 1 or more characters that are not a comma
$     - string end

$n is the nth match i.e. nth pair of brackets