To jest parametr pobierany z żądania, następnie przekazywany do metody przez binder w MVC. Domyślnie jak wejdziesz na adres Login?returnUrl=blabla, to zostanie wyciągnięte "blabla" z query stringa i przekazane dalej.
Teraz jest pytanie, kto wypełni query stringa. A to zazwyczaj załatwia filtr sprawdzający użytkownika, coś, co bierzesz z frameworka. Jak wrzucisz [Authorize] na kontroler lub metodę, to filtr sprawdzający zalogowanie to wyłapie, sprawdzi dane użytkownika, w przypadku niezalogowanego ich nie znajdzie, więc przekieruje na Login i ustawi returnUrl tak, żeby po zalogowaniu się użytkownik poszedł tam, gdzie chciał (do jakiejś podstrony), a nie na stronę główną. Adres podstrony weźmie znowu z żądania, więc efektywnie na samym końcu returnUrl jest podawany niejawnie i nieświadomie przez użytkownika.
A jak używasz innego mechanizmu autentykacji i autoryzacji, to rozkmiń sam, albo podaj więcej kodu.