If your home router is a regular linux box, though, you can easily use Amazon Route 53 to achieve the same thing. Route 53 isn't free, but for unpopular domains most of the cost is in the fixed per-zone cost (and subdomains are free anyway).
So, you can dedicate a subdomain of one of your existing domains for the purpose of keeping track of your home machine, essentially free.
I wrote a little script to do this: https://github.com/mjkelly/experiments/blob/master/dns/route53-update.py. It's still pretty rough, but it appears to work.
(I could have used boto to do this much more concisely, but I was interested in doing the authentication bits myself. My official justification is that I was trying to keep dependencies minimal.)
Note: If you're running pfsense on your home router, you can use it (as of 2.1-RELEASE) to set your DNS name in Route53 as well. (It is not listed on doc.pfsense.org/index.php/Dynamic_DNS, but it is an option.)