Ugh...maybe the "at" clause follows the entire query and therefore can't be buried in a subquery...
I have no experience playing with timezone issues in PG, I'm afraid. I suggest you go ask the PG folks directly. If they figure out a way to do this in a single query, let us know, OK?