You have to build the logic like this.
> 1. Find Previous owner and Current Owner
2. Verify if previous owner is a 'Queue'
3. If point 2 satisfies then find the current user is part of that queue.
4. If point 3 satisfies then allow update the ownership, otherwise throw the error message.
5. Also, wise to check, if current and previous owner are not same.


    {!REQUIRESCRIPT("/soap/ajax/31.0/connection.js")} 
        var ownershipChangeRequest = new sforce.SObject("Case"); 
        var previousOwner = "{!Case.OwnerId}"; 
        var currentOwner = "{!$User.Id}"; 
        ownershipChangeRequest.Id = "{!Case.Id}"; 
        ownershipChangeRequest.OwnerId = "{!$User.Id}"; 
        
        //if previousOwner is queue 
        var ownerRec = sforce.connection.query("SELECT owner.type, ownerid, Id from Case where  OwnerId='"+ previousOwner + "' AND " + Id='" + {!Case.Id} + "'"); 
        var records1 = ownerRec.getArray('records');
        if(records1 !=null)
        {	
        	if(ownerRec.records.owner.type == 'Queue')
        	{
        		//currentOwner is part of queue
        		var currentOwnerRec = sforce.connection.query("SELECT g.UserOrGroupId From GroupMember g WHERE groupId ='" + previousOwner + "' AND g.UserOrGroupId ='" + currentOwner + "'");
        		var records2 = currentOwnerRec.getArray('records');
        		if(records2 !=null)
        		{
        			var result = sforce.connection.update([ownershipChangeRequest]);	
        			location.reload(); 	
        		}
        		else
        		{
        			alert("You cannot take this case because you are not part of the queue");
        		}
        	}
        }
        if(previousOwner == currentOwner) 
        {	
        	alert("You are already the Case Owner ");	
        }