Ciao, nessun componente salva in automatico i dati, solo un database lo fà.
La StringGrid, se editata a runtime deve essere "salvata" con i propri metodi e ricaricata alla partenza.
Prova ad inserire nel tuo codice questo:
Sg.SaveOptions := [soDesign, soPosition, soContent, soAttributes];
Vedi se ti aiuta.
Inoltre, al nome del file io darei il percorso completo ... discussioni già effettuate in altri post.
var Percorso: string;
Percorso := ExtractFilePath(Application.ExeName) ;
FileName := Percorso+'Utenti.txt';
EDIT: Inoltre invece nel FormShow, prova ad inserire il tuo codice nel FormCreate. Non vorrei ci fosse qualche gabola alla partenza con il FormShow. E puoi anche andare a leggere il file creato per vedere se i dati ci sono.
Ciao