We'll start by saying that cart abandonment will never be 0%. The internet provides the perfect tool for customers to browse. Unfortunately, this means people will do everything to test parts of a website to ensure they're happy and feel like they can trust it. This will include adding to bag, looking at the checkout, reading reviews and general looking around.
In fact, almost 60% of shoppers who abandoned their basket said they "weren't ready to buy'".
So what are the main reasons that people choose to abandon when in a place where they are ready to buy?

As you can see, being open and honest about all the costs means that customers aren't surprised and will be less likely to leave your site empty-handed.
However, not forcing account creation is also a large factor. This is a big one because it makes it easier to track customers. But, there is no reason that you can't email them with an incentive to create an account after the fact. For example, more accurate tracking updates, promotions, or 10% off next order for people who have signed up.
Long and complicated checkout processes are also a pain for customers, but surely they are for you as a business too? The longer a checkout, the more to go wrong, the more to test and the more to build and maintain.
Checkout optimisation isn't easy and can take a few attempts to get it right, plus don't forget that trends change over time and remaining static in design and functionality isn't the ideal strategy.