Can data changes become visible between a subquery and an outer statement in PostgreSQL?
Is it possible for the DELETE to see rows that weren't previously committed and visible to the SELECT subquery?


No, that's not possible. 

Postgres always operates at "read committed" isolation level (or higher) and every statement sees a consistent snapshot of the database from the time the statement started. And in this case the statement defining the snapshot is the DELETE statement. The select from the sub-query sees the same snapshot