How to prevent granting Userpoints again after a user already passed a Quiz?
You might use the Rules module to take away the role which has the permission to take the quiz once the quiz has been completed.