A large proportion of Open-access journals do not charge fees, but those that do have higher impact and visibility, in part because they have the resources to promote themselves.
Libraries save money if authors publish in open-access journals but there is no mechanism (that I know) that redirects this saved money to the authors so that they can publish open-access.
Publishing does not require expensive software, thanks for instance to open-source software such as the Open Journal System: http://pkp.sfu.ca/?q=ojs
Many funding agencies make it a requirement that findings are publish as Open-acces, but this has not worked well. Elsevier for instance allows you to pay and make your particular paper Open-acces, but a library cannot cancel a subscription even when a large proportion of articles from that journals are Open-acces, so the Publisher makes money twice.
Apart from the problem of costs for the authors, the open access model with a fee creates also a conflict of interest. Publishers in the past incurred a cost when they accepted a paper to print. To have a paper accepted meant that they had found space for you. Electronic publishing has little marginal costs so Publishers incur a cost when they “reject” a paper (so the situation has reversed). Good journals would still implement a selection but this change may have contributed to the inflation in papers that is well documented in most fields.
A model that would be a win win would be one where large libraries or research institutions pick up the cost of publishing at least one journal. They already have the personnel. If enough would do so everybody would save a huge amount of money and this would easily leave any large library better off. This would also remove the conflict of interest described above. Sadly it will never happen because we do not live in a rational world.