You could always use a dynamic DNS service[0] for your DNS A record, like dnsdynamic.org, then set up your 'main' domain name to be a CNAME record to your free dynamic DNS one. Most home routers have built in support for dynamic DNS already. It does add a level of indirection/potential failure, but then you aren't restricted to registrars with APIs for changing DNS.
e.g.
ryandvm.com (CNAME) -> ryandvm.dnsdynamic.org (A) -> 123.123.123.123
This is what I use for my home server, and it seems to work well.
Everyone always says that but I've had nothing but trouble with gandi.net.. not their registration system but their payment system.
Two separate times, I've had them recommended to me and both times I gave up on the transfer. Last time my payment (to my Amex card that I've had no other issues with) was rejected and this is what they said:
So that your order can pass this time, we require : A valid Government-issued Drivers License or Valid Government-issued passport with recognizable photo
AND A document from your telephone service provider that clearly states
the telephone number and the address as presented in the whois as
belonging to the registrant.
So I gave up instead. They never told me exactly why.
My gandi.net experience is ~7 years out of date, but I also eventually gave up after difficulties with their payment system (a year or two into using them). Other than that, they were fine - pretty much invisible.
The thing is, you can find lot of companies that will register your domain, take some money, and not make another sound until your domain needs renewal. I've always been surprised at the loyalty gandi.net has engendered for a service that's so thoroughly commoditized.
Seconded Gandi. I've moved my domains to them over the past year as they've come up for renewal and I can't fault the service provided.
They aren't the cheapest, but they aren't exactly pricey either, and I feel safe in the knowledge that my domains are well looked after, within Europe, and I have full control over the DNS records and so on.
I'll third gandi.net. I use them for all my US-based domains. Their slogan is "No Bullshit" -- and they live up to it.
My only complaint is that DNS changes through the webapp take 10-15 min to propagate to their authoritative zone files, making DNS cut-overs a little slower than I'd like.
I am moving all my domains to DNSimple.com now... I have hated GoDaddy for so long, and started registering all new domains at DNSimple but hadn't taken the time to transfer all my old domains... Finally doing that now... They have a nice API.
Dreamhost has an API for this -- contact me, email is in my profile. I have written a script that updates a DNS record with my current home public IP, before I got a static one.