While yes the merchant needs a static IP/Domain Name, how else would you get data to and from computers without rewriting the internet? How would nodes communicate without using this system.
Take I2P or Tor network for example. It's possible. From the merchant's point of view, a publicly accessible server is a huge security threat. I have developed all my bitcoin applications in a way that the most critical infrastructure is in my laptop behind a firewall and "hidden" from the public. Not to mention that domain hosting costs money and that your hosting provider could go rogue and hijack your service.
I would propose functionality to be added to the Bitcoin's protocol that allows storing payment details in the Bitcoin's block chain for a month (or some other period of time). When the payment details expire nodes can purge them from their copy of the block chain to save space. The merchant has 30 days to turn on their bitcoin node and fetch the payment details from the block chain. Those details should be signed by the payer's private key and encrypted with the payee's public key.