I'd just remove the shipping line from the cart page so that it isn't displayed since it won't be recalculated until they fill in the checkout form.
You can clear the shipping session variable on the checkout success page to clear it after a purchase has been made. If you don't have user login then you can probably just clear the entire session with:
<?php
session_destroy();
?>
Just place that right before the </body> tag on the checkout success page. If you do have user login and don't want to have them logged out, you can remove individual session variables with:
<?php
unset($_SESSION['YourCartName_UPS_Quote']);
?>
The correct variable name depends on the shipping provider and cart name you are using. You can look it up from your eCart definition file for what is used to calculate the charge.
You can add two shipping rules with conditions based on the weight so that UPS shipping charges only are used if the total weight is over a certain value then add a separate rule for setting the shipping charge if the weight is under that value.