As discussed on the mailing lists, the way that the Guacamole terminal emulator is loaded prior to actually attempting the SSH/telnet connection causes issues in handling of connection errors within the webapp:
I think this may be due to the way Guacamole currently handles SSH and telnet. Unlike VNC and RDP, where no display is given to the client until the connection is established, both SSH and telnet provide a display with a terminal while waiting for the connection to happen. From the perspective of the failover socket, the connection has succeeded.
This should be corrected such that, to the extent possible, the terminal emulator does not start rendering frames until the connection has actually been established. This will likely mean withholding creation of the terminal emulator until it is absolutely needed - either following successful connection or upon need of username/password prompt.
In the case of telnet, things get slightly more complicated as the username/password prompts involved are generated by the server. Even if the password is available ahead of time, properly exposing invalid credential errors will require heuristic detection of success/failure.