Every database in the system (including postgres, template0 and template1) had issued:
REVOKE CONNECT ON database FROM PUBLIC;
and database yyy got:
GRANT CONNECT ON yyy TO xxx
so user xxx can connect ONLY to database yyy.
Now if user enters login and password then phppgadmin tries to connect to template0 db (or whatever was set in config) and of course login fails... since user xxx can connect only to his own database yyy.
I solved this by adding another field at login screen: database name. So now user enters login, password, database and can connect properly.