This approach has one significant shortcoming. If the PC is behind some NAT box (say, a corporate firewall or a LinkSys Broadband Router), then the IP address of the PC isn't particularly interesting to the outside world, since the outside world won't be able to connect to the PC using that IP address.
I have DSL into a LinkSys router/hub, and have the DMZ host set to the local IP address of a Linux box. (Incoming socket connections get routed to the DMZ host, after the IP address gets translated from the router's externally visible IP address to the 192.168.1.* internal address specified for the DMZ host.)
A cron job on the Linux box periodically makes an "I'm alive" HTTP request to a CGI on my ISP. The CGI captures REMOTE_ADDR, which is the externally visible IP address for the router (and the Linux box, since it's the DMZ host.)
Invoking the same CGI with no parameters products a short page of HTML listing the last-known IP address for my home router/Linux box, along with a note about how recent the address is. I hit the CGI from work, open a secure shell connection to my home box, and can IRC from there.