When I connect to various VPN servers (Windows PPTP, Cisco IPSEC) the hostname of my laptop gets updated.
Is there a setting somewhere that will stop this from happening?
The VPN's DNS server probably assigns hostname together with the IP address and the computer uses it instead of what you've set during setup and what appears in System Preferences -> Sharing -> Computer name.
To set a permanent hostname do
You can still* set it in
Restart may be required in either case.