Is there a practical limit on the number of PostgreSQL TYPES?
Practical, no. All internal types are represented by an oid. That's an unsigned four-byte integer.

SELECT oid, *
FROM pg_type;


PostgreSQL uses OIDs as an internally unique ID. When you exhaust them you're out.

Creating 1,000 types: NOT A PROBLEM.
Creating 4.3 billion types: PROBLEM.

Update

As a side note, I don't see how you can expose the types usefully to a user. PostgreSQL has a type jsonb. It's indexable and stored as binary, like Mongo's BSON. I would be using that.