@Peter36994, I’ve found a blog that describes similar symptoms to yours - SSH hanging after login. The outcome was to modify a file within the Raspbian filesystem, which is probably out of the question if you’re on a Windows machine.
That still doesn’t explain why a USB keyboard doesn’t work. Have you tried Rasbian Lite with only a keyboard and monitor plugged into the Pi?
EDIT: I’ll include the steps here for posterity.
After some investigation we have determined that this a combination of two issues. One the latest version of SSH installed on the Raspberry Pi 3 uses QoS headers to ensure speedy delivery of packets over the network. For interactive connections (standard shell SSH connections) it sets the IP header for IP_TOS to be 0x10 (low delay or latency). For non-interactive connections (scp, etc) it sets the IP header for IP_TOS to be 0x08 (max throughput).
The problem in our case seems to be that our network doesn’t really like those values. We aren’t sure if this issue is with the router itself, or something in between. Since this connection is occurring over WiFi and our router handles the Wifi, we suspect that the router is where the issue lies though.
Additionally, we were able to determine that this impacted both SSH and SSHd, so both incoming and outgoing SSH connections were impacted by this issue.
Edit the two configuration files for the Raspberry Pi:
/etc/ssh/ssh_config
/etc/ssh/sshd_config
And add the following line to the bottom of the configuration file:
IPQoS 0x00
And restart sshd (sudo service sshd restart).
This configuration change will modify the TOS value sent out by SSH and SSHd, and will no longer choke the network connection.