the main problem with sharding is keeping it decentralized. sharding can work with a database easily but blockchain is not a normal database. the current design of a decentralized trustless cryptocurrency is that you literary start from ground zero and download every single transaction that has ever been made and verify them one by one then add to your database. finally you will be left with a blockchain (database) that is cryptographically secured and verified so you can trust it. if you introduce sharding you are removing that trustlessness and would require trusting others.
so far there has been some proposals like BFT sharding, Zilliqa, Merklix tree,... and they all try to address these issues but none of them have ever come close to solving them.
on top of that it introduces new attack surface to malicious attackers that never existed before. for example when you use what is called "validators" an attacker can easily take over majority of them that are responsible for validating a particular block and can successfully submit an invalid block to the chain. this take over can be either by actually taking over the validators or simply bribing them to do his dirty work.
this will also kill SPV clients since they will no longer have any way of protecting themselves against fraud.