Subito una precisazione.
Se non vuoi far puntare un link da nessuna parte, non usare href='' ma href='#'.
Poi il tuo esempio su IE non funziona (
a dire il vero non funziona nulla del tuo sito su IE, il click sui tasti non produce effetto), IE non ti permette di agire sulla proprietà type.
Se vedi il codice che JS dell'esempio proposto veniva prima di tutto verificato il browser usato e in base a questo cambia il modus operandi.
Su IE l'approccio era quello di creare un nuovo elemento input di tipo voluto, posizionandolo dopo l'elemento indicato, che poi sostituirà.
Personalmente a me non piace il doppio tasto.
Rimanendo nell'ambito del tuo codice, per eliminare almeno un tasto inizierei a sostituire u due pulsanti con uno solo (Mostra/Nascondo Password) che richiami al click la funzione cambia().
La funzione prima verifica di che tipo è il campo password (text o password) e agirà di conseguenza.
Qualcosa del tipo
Codice:
function cambia(){
if(document.forms.form.campo.type == "password") {
document.forms.form.campo.type = "text";
}else{
document.forms.form.campo.type = "password";
}
}
Per il cursore (a parte che personalmente infastidisce) devi catturare l'evento blur sul campo (quando il campo attivo non è più il campo password) e modificare il cursore come meglio credi (o qualunque altro controllo).