Say I have staked enough eos for 10mb of bandwidth. When I run out of bandwidth, can I unstake and stake back as soon as possible to get 10mb more of bandwidth without any cost?
It depends on your understanding of cost. You don't loose an absolute number of tokens. So if you stake 3 token you will receive 3 token back after unstaking.
What you do pay is some opportunity cost in form of time, because you have to wait 3 days before you can unstake.
Another thing you pay is the lets call it inflation cost because of the annual inflation of 5%. As described here it is split in 1% rewards for block producers and 4% as savings. So the relative value of your token may decrease.
The whitepaper describes it like this
One of the major benefits of the EOS.IO software is that the amount of bandwidth available to an application is entirely independent of any token price. If an application owner holds a relevant number of tokens on a blockchain adopting EOS.IO software, then the application can run indefinitely within a fixed state and bandwidth usage.
Maybe this video and explanation about ressouce allocation (also RAM and Bandwith) with Dan helps you to understand even more.
Clarification of the inflation cost. Thanks to @confused00