Dato che questo problemino potrebbe essere frequente, con l’aiuto del link di Alka creo un piccolo tutorial.
Per disconnettersi è necessario il comando (provatelo dal prompt di Dos):
rasdial “NomeConnessione” /disconnect

Tradotto in Delphi, significa che se colleghiamo il tutto alla pressione di un tasto diventa:
codice:
procedure TForm1.Button2Click(Sender: TObject); 
var  
  cmd, par, fil, dir: PChar; 
begin 
  // disconnect the connection to the Internet 
  // Verbindung zum Internet abbrechen 
  cmd := 'open'; 
  fil := 'rasdial.exe'; 
  par := PChar(edtEntry.Text + ' /DISCONNECT'); 
  dir := 'C:'; 
  ShellExecute(Self.Handle, cmd, fil, par, dir, SW_SHOWMINNOACTIVE); 
end;
Per la connessione, la sintassi è la seguente (tutte le info le trovate alla guida di windows):
rasdial NomeConnessione [NomeUtente [{Password|*}]] [/phone:NumeroTelefono]

In Delphi ,(attenzione la procedura dell’esempio è stata modificata, mancava il numero di telefono da comporre):
codice:
procedure TForm1.Button1Click(Sender: TObject); 
var  
  cmd, par, fil, dir: PChar; 
begin 
  // establish the connection 
  // die Verbindung aufbauen 
  // rasdial.exe entryname username password 
  cmd := 'open'; 
  fil := 'rasdial.exe'; 
  par := PChar(edtEntry.Text + ' ' + edtUser.Text + ' ' + edtPass.Text + ' ' + '/phone:000000 ' ); //dove 000000 è il numero da comporre per connettersi 
  dir := 'C:'; 
  // call rasdial.exe with Shellexecute 
  // rasdial mit Shellexecute aufrufen 
  ShellExecute(Self.Handle, cmd, fil, par, dir, SW_SHOWMINNOACTIVE); 
end;
Direi che seguendo il link di Alka e queste istruzioni non ci dovrebbero essere problemi.

P.S Attenzione all’uso di ShellApi nella sezione Implementation. Conviene vedere la guida “Windows SDK”.

Ciao