Ar fi trebuit sa mearga.. Am si testat si a mers pe localhost.

Exemplul lui dublutz se poate imbunatati pentru a functiona si in cazul in care exista fisierele la care se face request.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ viewprofile.php?username=$1

Sau prin negatie ("orice caracter in afara de /"), care se spune ca este mai rapid decat metoda "greedy" (.*):

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)$ viewprofile.php?username=$1

Si a doua metoda e OK si in cazul in care se face request la un script din alt director (tocmai din cauza faptului ca apare acel / in negatie).
Daca totusi vrei sa folosesti prima metoda (.*) - insa nu recomand, trebuie sa pui si :
RewriteCond %{REQUEST_FILENAME} !-d

Oricum eu prefer varianta de la sfarsitul postului nr#2.