So you didn't start it as root before but now you do and that solved part of your problem or what? I have troubles figuring out what's going on according to your description.
Anyway, assuming that this is the case maybe the user that the process switches to after binding to port 80 simply doesn't have the rights to execute psql? What user do you specify in the -u option when starting nsd, and did you try to su to this user and execute /usr/local/pgsql/bin/psql from the shell as this user?