We ran into an odd situation when users go to the CheckoutHandler payment window and hit the cancel button (in this case is Authorize.Net).
When this happens, users are able to change the shipping method but the fee is not updated.
If we open the order in backoffice the fee is updated on frontend. If user reloads the page instead of hit cancel, the shipping fee is updated properly.
Do not know if this happens with other CheckoutHandlers or if it is the way Authorize.Net is handling the cancel state.