In almost every other country you'd pay a fee for such a transaction. In the UK it's free of charge, but the banks earn interest on the money for a couple of days - which really just covers costs rather than returning a profit.
This is due to change in the not too distant future with an HSBC initiative, working with the other 'clearing banks' to make the whole process faster.
When BACS was set up, it was set up for 4 day transfers, there's a lot of IT investment, technology, testing and planning going into the new system. It's been delayed a bit as it should have been in place towards the end of this year, but watch out for more info on the news next spring.