Io farei:

codice:
public Nodo inversione (Nodo prev, Nodo n)
{
    Nodo next_t = n.next;

    n.next = prev;

    return next_t != null ? inversione (n, next_t) : n;
}
Da invocare con:

head = inversione (null, head);

L'unico caso particolare è che non deve essere invocato se 'head' è null (=nessun nodo) ma si tratta solo di mettere prima un test.