I'm not planning any more GUI button features in this plugin, since the feature requests around that are never ending. Such capability could be considered for the Backpack Button plugin, or somebody could make an alternative to that plugin. I think this has in fact been requested before. Also, you can use the feature of that plugin to display the slot count already.
As for protecting players from purchasing upgrades that do nothing, that type of problem ultimately stems from using commands for inter plugin communication, and/or relying solely on permissions. Commands are effectively one-way, so Backpacks can't tell your shop that the player already has a certain amount of capacity. However, there are at least two solutions.
One option is to start using the dynamic capacity feature of Backpacks, and the shop plugin could be updated to utilize that feature via the Backpacks API. That would allow the shop plugin to detect whether the capacity could even be increased, and would allow more nuanced upgrades, like N slots at a time, without you needing to define each incremental upgrade.
Another option, which IMO needs to happen anyway, is the shop plugin should have a way of hiding a listing if the player has a permission. So if the player has the large backpack permission, the large backpack upgrade could be hidden. This seems like a no brainer as it would solve use cases for other plugins as well. Not sure if any of the existing shop plugins support this today, as there are quite a few out there.