Una possibile soluzione è quella di non utilizzare scanf ma un ciclo di getch. Scanf aspetta la pressione del tasto invio da parte dell'utente prima di ritornare.
Potresti scrivere una tua funzione, che in un ciclo chiama ripetutamente getch() finché viene premuto invio, ricostuendo così carattere dopo carattere la password inserita dall'utente. A questo punto sei libero di mostrare una serie di asterischi, o lasciare vuota la schermata.