Ho smanettato un po' partendo dal tuo esempio e questo sembra andare
Dite che va bene?

Codice PHP:
$testo "ciao #marco e ciao anche a #giovanni72, ma a # #luca niente.";
echo 
preg_replace('/#(\w+)/''[url="utente/\\1"]\\1[/url]'$testo); 
Ho messo anche un # isolato per vedere se dava problemi.
Ciau