Permission Denied Copy
in general, you should use \copy where you can in psql instead of COPY since that wraps COPY FROM STDIN.  Where you want to copy from a file, you can wrap that yourself in your own application (specifics dependent on language but see the Pg docs).

The alternative is to put files somewhere that the Postgres user can access them, like /tmp/ and COPY from there.  Of course this means the files must be present on whatever system the db server is running on, rather than the system the client is running on if using the previous paragraph's methods.  Chances are your problem is either the immediate directory the file is in or a parent directory.  Keeping these in a spool directory which is more general will help manage this problem.