You're paying for storage either way but in AWS you don't have to try to figure out the max storage you'll need. Figure you design a system with a 3-5 year lifetime, so you need to know how much storage you'll need over that period. I don't know about you, but that's pretty hard for me to do. Plus, what happens when you do a major software upgrade and you want to retain full offline backups of everything for a couple weeks, effectively doubling of tripling your storage footprint during that time? The flexibility to get as much storage as you need and only pay for it while you use it is hugely useful.
the networking you pay for data per MB or GB in and out
You rarely if ever pay for data transfer into AWS., but for transfer out you'd have the same costs if you self hosted anyway. They wouldn't be per MB, they'd be flat rate, but you're getting a lot more for your dollar at AWS. Let's say you average 10 Mbps 24x7. That's about 2.96 TB of data transfer a month which costs $346 at AWS. A symetrical 10Mbps business connection for your office is probably going to cost you more than that. In addition to that, you're also getting much better redundancy and scalability at AWS and you don't have to pay for the network equipment (switches, routers, etc).
You pay for backups if you self host too.
you pay for DR in different availability zones
You might. You can create an application in an autoscaling group and tell it to span multiple AZs but only deploy one instance to the group. If that instance in AZ 1 crashes the system will automatically launch it in another AZ and you're only ever paying for 1 instance. You can also create a DR instance in another AZ and just leave it powered off until you need it, in which case you're only paying for the EBS storage, no compute costs.
you have to pay more in your office internet access to get the faster access to access your data
That's true. Many apps these days are just web apps which are not super bandwidth intensive. A lot of times if you have big data it's not as easy to make a financial case for going to the cloud. You can use direct connect to get 1Gbps or 10Gbps access directly to your data in AWS but it is fairly expensive. If you've got terabytes of data though, you probably can make up the cost in other areas.