Browse through https://opensea.io/, the most prominent NFT marketplace at the moment. Digging through the DOM of their website will reveal a lot of links to quite standard content storage solutions. They usually go through a bit of trouble to prevent people from simply clicking "view image in new tab" to reveal the actual location, but it's not difficult to get around.
The contract for the NFT generally just points to an IPFS identifier (a sha256 hash of the content), and it's up to the viewer (a website like opensea) to decide what ipfs gateway to use. Even if the ipfs network died you could still use other p2p methods to find the content, as long as someone was still hosting it.
It's a problem, it used to be the grand majority of collections were fully decentralised and frozen but nowadays it's a mixed bag – I think it will change once the gas problem is solved, but it's also partly because the audience has changed and newcomers into NFTs don't care so much about their tokens being fully decentralised.
> [O]ur NFT collection could very possibly become the largest on-chain collection ever in the history of Ethereum. Time would only be on our side because as gas becomes more expensive, the window of opportunity to bypass our on-chain NFT collection would fade away.
To give an idea of the storage costs associated, I dug up this old stackexchange-answer about storage costs on Ethereum [0], which estimates that it costs about 76.000 USD / GB stored. Note that this is 5 year old answer, so the price will probably have multiplied like the price of ETH since then.
Edit: Here's [1] a newer, updated price estimate that takes current prices into account : 309.9 Million / GB. LoL!
[0] https://ethereum.stackexchange.com/questions/872/what-is-the...
[1] https://proderivatives.com/blog/2019/5/10/minimizing-data-st...