Cómo detectar si el teclado en pantalla está visible

Puede utilizar la función de WinAPI IsWindowVisible.

Para Visual Basic, se ve así:
Dim hWnd As Long 
hWnd = FindWindow("TMainKeyboardForm", vbNullString) 
If (IsWindowVisible(hWnd)) Then ........