You probably need to review the roles and permission of the users who are able to close tickets outside of that Queue.
If the user is having a 'modify all' permission for Incident object then he will be able to update/close any record no matter what.
Same applies to the users who are higher in Role hierarchy. They can update records which are accessible to those below their role.
I realize this is very old and I don't know if you ever came up with a solution or not. I was searching for something else and saw this and thought i would respond with what we do. We allow access by all Staff members to all queues records except for three data segregated queues. We had the same problem you are describing where people were closing incidents that were not owned by queues they were members of.
We want for our Staff members to be able to view and modify all non data segregated records but don't want them to be able to close them without reassigning to a queue they are a member of. This messes up our reporting and surveys.
So, we created a very simple validation rule that fires whenever Closed By does not not equal Staff. Now when a person attempts to close an incident they are not assigned to they have to change the queue and staff fields before they can proceed.
Hope this helps.