user14380: I am currently having a blonde moment. 
The ScriptPubKey provides a hashed version of the receivers public key. 

scriptPubKey  OP_DUP OP_HASH160  OP_EQUALVERIFY
  OP_CHECKSIG

However, if I give someone my bitcoin address to send me money - how does the sender retrieve my public key and then hash it? As the pubKeyHash != my bitcoin address
I am probably forgetting something very obvious - but it has had my head bambuzzled this morning. 

user208: Addresses are really just shorthands for particular scripts. The standard address type (starting with a '1' on mainnet) does in fact correspond to the exact type of script you gave above.
If you base58 decode such an address, you end up with a byte string of the form 0x00 + [20-byte hash] + [4-byte checksum]. The corresponding script is OP_DUP OP_HASH160 [20-byte hash] OP_EQUALVERIFY OP_CHECKSIG.
So, in a way, your address does contain the public key's hash.

14380: <p>I am currently having a blonde moment. </p>

<p>The ScriptPubKey provides a hashed version of the receivers public key. </p>

<blockquote>
  <p>scriptPubKey  OP_DUP OP_HASH160  OP_EQUALVERIFY
  OP_CHECKSIG</p>
</blockquote>

<p>However, if I give someone my bitcoin address to send me money - how does the sender retrieve my public key and then hash it? As the pubKeyHash != my bitcoin address</p>

<p>I am probably forgetting something very obvious - but it has had my head bambuzzled this morning. </p>
 208: <p>Addresses are really just shorthands for particular scripts. The standard address type (starting with a '1' on mainnet) does in fact correspond to the exact type of script you gave above.</p>

<p>If you base58 decode such an address, you end up with a byte string of the form 0x00 + [20-byte hash] + [4-byte checksum]. The corresponding script is OP_DUP OP_HASH160 [20-byte hash] OP_EQUALVERIFY OP_CHECKSIG.</p>

<p>So, in a way, your address <em>does</em> contain the public key's hash.</p>
