TLDR:
Why can't banks give me my money?
We don't have your money.
Who has my money?
About half a dozen different people all over the world. And we need to coordinate with them and their banks to get you your money.
I love how everyone seems to think that the securities industry has super powers.
Believe me, even with T+3, you won't believe how many trades fail to settle properly.
Yes, your trade is pretty simple. But Cash Equity trades in general can be very complicated (for the layman).
Your sell order will have been pushed onto an algorithmic platform, aggregated with other sell order, and crossed with internal buy orders. The surplus would then be split out by the algo to try and get the best price based on "orders" on the market.
Finally the "fills" are used in settlement, which could potentially have been filled in multiple trades against multiple counterparties.
In order to guarantee that the money can be in your account, we need 3 days. Also remember, we aren't JUST looking at your transaction. Each bank is looking to square off all the different trades between all their counter parties over a single day. Thousands of transactions/fills may have to be processed just for a single name. Finally because, there a many many transactions that do not settle automatically, our settlements team needs to co-ordinate with the other bank to make sure that you get your money.
Bear in mind, banks being banks, we are working with systems that are older than I am.
*And all of the above is the "simplest" case, I haven't even factored in Dark Pools/Block trades, auctions, pre/post-market trading sessions, Foreign Exchange, Derivatives, KYC/AML.