Your example doesn't work
I thought I'd fixed it by adding the runtime $_SESSION['VisitorID'] as per tutorial to your example recordset and INNER before JOIN but this still didn't automatically update the country menu.
Reading the DW help files I noticed the menu order is important so checked and found UK and US were different from the countries table but still didn't work.
Also tried deleted the "selected" option which was displaying "Choose a country".
Still the checkout fields don't fill automatically but SagePay is seeing the country abbreviation.
Adding the country abbreviations to the countries table fixed it.