The bpalogin.conf file I posted earlier is the one I created manually. Here is the original as generated by the firmware:
username xxxxxxxx
password xxxxxxxx
authserver 61.9.192.13
localport 5050
logging syslog
debuglevel 0
minheartbeatinterval 60
maxheartbeatinterval 420
connectedprog bpa_connect
disconnectedprog bpa_disconnect
The nvram values are:
wan_heartbeat_x=61.9.192.13
wan0_heartbeat_x=
wan0_domain=nsw.bigpond.net.au
wan0_gateway_t=
wan0_gateway=<IP address of my WAN gateway>
Incidentally, I've done some more testing and there is a very simple solution to this whole issue. Simply appending the BigPond domain (<state>.bigpond.net.au) to the resolv.conf file using the post-boot script allows bpalogin to register the correct address for the heartbeat server. This simple approach works because bpalogin actually executes a few moments after the post-boot script (not before as I was led to believe).
In other words, no changes to bpaconfig.conf are needed, and no need to setup the post-boot file to kill the bpalogin process on startup and then restart with the new config file. All that the post-boot file needs to do is append a line to the resolv.conf file with the BigPond domain.