It seems strange to me, considering almost every other European language pronounces it with a hard V, or as a variant of the Latin Varsovia. Has it always been pronounced with a Germanic w in English, or was this a hypercorrection?
I cannot speak specifically to the history of Warsaw, but I feel that some of the answer to your question might be found in the linguistic history of the english letter "w." (Apologies if this is a little too r/linguistics)
"W" was the 24th letter to join the english language (chronologically), before the letters J and V. In Latin, here was no W, instead they used a U (or two) to fulfil the same purpose - and eventually latin shifted to use a B sound where once they used the constanant U.
As the U/W sound died out in Latin, it thrived in Germanic language for long enough to establish a firm footing in Anglo-Saxon Britain, and during the 1500s made it into the alphabet proper. Whilst this was happening, in Northern Europe, the W started to go the same way it had in Latin - slowly it was being replaced with another letter. Unlike Latin, it did not morph into a B, but into another U variant, a letter which didn't enter english print until he 1700s, and even then was still considered to be just a variant of U. V.
The boundaries between U,V and W have been flexible for a long time, and different languages tend to favour them differently.
Linguistics is a complex field, and I am not an expert in it, but I hope this helps you to answer your question. As an interesting final thought: Latin, a language which has as many exceptions as rules, didn't change all of it's UUs to Bs - it made occasional exceptions for place names.