An online-only bank (with ATM support of course) that lets you have as many "virtual" accounts as you want, and lets you set up programmatic rules for transferring money in between accounts on certain days/times, or triggered by events ("transfer $100 from B to A if account A goes below $100, and notify me by email"; "on overdraft from A, withdraw from B instead"). Then have a debit card that you can use to charge to any of your accounts, and an app that lets you configure which account it's drawing from.
This would make "budgeting" very easy. Have a "food" account, an "entertainment" account, etc. Do weekly or monthly budgets by transferring money into your mini-accounts, and denying transactions for each account when it goes over budget. (Or let the transaction go through from a backup account, but notify you that you went over budget.)
Also, have an API that anyone can write apps for.
Of course, I'll never do this because starting a bank is really hard.