How can someone verify the signature of a Bitcoin ECDSA signature without knowing the signer's public key?
Simple, the sender shows the pubkey when spending from whatever address the bitcoins are in. As part of the verification, the receiver (actually, every node in the network), can verify that the pubkey hashes to the address given and then and only then verifies the signature.