All the answers are partially correct.
Anonymous: The function accepts a pointer not a reference to the pointer (pass by value). Hence if the pointer 'Head' is modified in the function, it doesn't affect the actualy pointer that was passed into the function.
However, what's missing in Praveen's solution is the boundary condition of whether the Head node is NULL. If it is, then the starting statement of the while loop is going to access a NULL pointer.
The correct solution should be something like:
Node* GetLastNode(Node* head)
{
// Loops through till the end of the node
for(; head != NULL && head->next; head = head->next);
// Return the last node (This could be NULL if head was NULL).
return head;
}