I think one of the biggest things holding Monero back from a user experience standpoint is the need for every user to download a large subset of information each time they want to check their balance.
Although with light wallets this information is not stored permanently we still require a user that has been offline for n blocks to temporarily download and check for new transactions, to ensure they have not missed any transactions that were sent to their address.
This property results because of the mandatory implementation of stealth addresses across the whole of Monero's TX base, which ensures that users must attempt to calculate the spend key for all transactions that occur.
Is there any significant research that has gone into potential solutions to this problem?
Naively, I can only think of modifying the existing approach to this problem which is to give your view key to someone else to perform the calculations. Perhaps instead of allowing them to see transactions which you owned, we could use a MPC scheme, a set of untrusted nodes and split the computation among those nodes so that no one node knew who was holding what funds Then if the results of the MPC were combined by the user, they could understand which TXs were sent to them.