Well you are creating a new node for each item your adding aren't you? or are you just changing the same node and then adding it again. If your doing the latter that is why your are looping indefinitely.
If you don't want to create a new node each time before you add it you could add code to your AddNode() member function to do it internally (probably preferred). That is basically what Elad was referring to. If you create the nodes outside your list then if or when you modify them outside of the list, it would change the list as well.
I can see why you might want to pass a node if you have two lists and you want to transfer one node from one list to another. The nodes have already been created internally and you are just removing it from one list and inserting it into the other.
mylist.DisplayName();// will display Name Betty as first node instead of Henry