The correct terminology is pound, even though Brits, Aussies, Kiwis call it a hash.
It comes from latin, libra pondo which literally means weight.
When latin was less popular in western Europe it was common to put a strike through a common latin abbreviation. So imagine lb with a strike through the top and you've got something that looks like #.
The german company Heidelberg started producing type blocks with # symbols very early in their printing products. Linotype also used it. Typewriters had it. Almost all the printing world used it and it became common to express imperial currency using a # in non English speaking countries thanks to the Heidelberg presses all over the world.
When the US telephone system was automated, and early dialling was decadic, ordinary phones just had number 0,1,2,3,4,5,6,7,9 things were simply expressed on the dial. However with the advent of DTMF there needed to be some new keys for other functions. Since DTMF is actually usually hexadecimal it was thought having 16 button hexadecimal keypads would be unwieldy, so # and * were decided upon and Bell Labs produced the first 12 button DTMF phones with these symbols. This also became adopted world wide.
The American usage of the word pound is absolutely correct when it comes to the etymology of the symbol however to those of us under British colonial rule, we call it a hash symbol and it seems even Twitter agree because they call it a hashtag - which sounds cooler than a poundtag.
