I was using Windows inside VirtualBox to update my iPhone. Before attempting anything adventurous, I created a backup, and it went smoothly. However, after the IPSW file was successfully downloaded, iTunes stuck in the “Waiting for iPhone” state, and my iPhone shows the recovery screen. :(

With the backup created a few minutes ago, the situation was not devastating. However, iTunes stopped recognizing my iPhone somehow, and restart & plug-in/out didn’t make any difference.

Some Googling brought me to https://forums.virtualbox.org/viewtopic.php?t=41508, and the suggested solution solved my problem flawlessly: my IPhone was updated successfully.

Namely, VirtualBox controls what USB devices from host were accessible in the guest OS. The USB filter I used was too specific, and during the iPhone update, its identification changed. The USB filter should be something like:

Name: Apple Inc. iPhone
Manu: Apple Inc.