You need at first to create a copy of the current list and after that change the current list. And the copy has to be returned. In your example you return a copy of already changed list.
Also take into account that when you use an overloaded operator function there is no side effects as with the built operator.
For example the function could look as provided that the copy constructor is valid
//Deletes the last node
LinkList LinkList::operator--(int){
LinkList currentList( *this );
if(list){ //If the list isn't empty
if(list->NextNode()){ //If there in another node
Node* newLast = (*this)[list_size - 2]; //Store the new last node
delete newLast->NextNode(); //Delete the last node
newLast->InsertNext(NULL);
}//if
else{ //The head is the only node
delete list; //Delete the head
list = NULL; //The list is now empty
}//else
list_size--; //Update the list size
}//if
return currentList;
}//end