Las comillas simples se utilizan en SQL para los literales de cadena. Eso significa que esto:
'$2'
es solo una cadena que contiene los caracteres $
y 2
en lugar de un marcador de posición. Si desea un marcador de posición, debe omitir las comillas:
$Query = pg_query_params($db, '...password=(crypt($2,password))...', array(33,'thepassword'));
Eso le da el marcador de posición en lugar del literal de cadena.