In general way? The answer is no. Only kernel is involved when message passing between 2 processes.
The possible way (that Mario suggested) is to create your own “server”. In QNX, a client always reference its server with a “pathname” that the server attach to. What you can do, is write your own access control process, attach to the same “pathname”, this way, any attempt to reference the pathname, will goes to your process first.
Normally, you do access control on “connection” time (think open()), the very first time the client try to talk to server. You permit (by pass through the request to the real server) or reject the client’s request of connection. This way, there isn’t too much overhead.
If you need to check client’s permission “request by request”, then it involves your access control process act as a “proxy”, which will have much over-head.
Being said that, if the client is really smart, then it is possible for it to by pass your access control. Unless you have the control of what client could be execute on your system.