One thing for sure is you should change the trigger for setting the session variable. The trigger you are using will only set the session variable if it isn't already set, and would prevent people from changing the setting.
It should probably just always set it like:
@session_start();
if(""=="") {
$_SESSION["eCartCheckoutForm_country"] = "".(WA_getSavedFormValue("CheckoutWizard_NewFromBlank_Default","Country")) ."";
}
Another thing that I'd probably do is add a condition to both rules "If session variable exists" so that it won't show any shipping until after they set their country on the checkout page.