I am currently working on a self-hosted image sharing platform as my January side-project (Will post a Show HN when it's done).
Can you recommend VPS providers that offer cheap/reasonable plans with big storage?
SSD is not needed for this.. I would even prefer conventional HDDs if that saves money/offers more storage. Processing power and RAM should also be secondary as long as it's enough to scale images in a reasonable time.
I use LetBox for some projects and have been happy with them. Their high-storage plans go up to 10TB disk at $48.30/mo. In my experience their disk performance isn't stellar, but for lots of use cases it's more than adequate. Note that LetBox explicitly disallows media piracy on their servers (not your use case, but that's the context in which a lot of folks seek out high-storage servers). https://my.letbox.com/cart.php?a=confproduct&i=2
There's also WalkerServers. They rent out bare metal servers by the month, going up to 144TB at €255/mo. Their plans are more expensive than LetBox, but you should get better performance since it's bare metal, and if you buy your server in the Leaseweb datacenter, torrenting is allowed. The owner conducts a lot of customer service on Reddit and people seem pleased with his services.
Finally, for your specific use case, I would suggest considering AWS S3, Backblaze B2, or similar. Local disk space could easily be a limitation for folks looking to self-host image space; I have a friend with multiple TiB of images in Google Photos he's looking to move somewhere else. I have 30GiB of photos, which rules out lots of cheap VPS plans. Lots of folks also won't spring for more than the cheapest VPS plan they can get, or they'll load up your software on an old computer with modest storage. Local storage also makes your users responsible for backups/disk failures for some of the most important data they own, and most users really don't implement backup well. Putting the photos into a highly-durable, infinitely-scalable, cost-effective object store with push-button backup/versioning settings carries a lot of advantages for this sort of project. It doesn't have to be either/or -- you could support both -- but I definitely suggest supporting object stores.