Generally speaking, how can:
A) A programmer contribute to Bitcoin?
B) A non-programmer contribute to Bitcoin?
Essentially; which areas are in most need of programming work / non-programming work?
As a Programmer
It should be noted that it is possible to safely test bitcoin transactions without using real bitcoins by using the testnet (see the -testnet command line option). You can even create your own self-contained testnet-in-a-box.
As a Non-Programmer
Learn more about bitcoin. Try using them. Learn proper ways to secure them. When you become better versed in bitcoin technology help by explaining it to others. If you have a business, experiment with accepting bitcoin. If you are a customer, ask if a business accepts bitcoin. Help to dispel the myths and misunderstandings of bitcoin whenever you talk about them. However, be careful to get your facts straight.
If you have talents in other areas such as design, business, or blogging, etc. then look for ways to contribute using those skills. It has been suggested that the client needs better interface designs, businesses have expressed interest in advice on bitcoins, blogging can help address all the misinformation and rhetoric.
Everyone has something they could contribute, so give it a try.
Join one of the many bitcoin library projects on Google Code or Github:
Spread the word about Bitcoin to others. Download a copy of one of the many wallet applications to your phone and demonstrate using it to buy something from someone.
Spend some of your coins to encourage merchants to adopt Bitcoin. Goods and services will be encouraged by demand. So buy stuff you need on a daily basis using bitcoins.
Whether you are a programmer, or a non-programmer, Bitcoin needs talented minds to help make it easier to use, and more widely accepted.
For programmers, one key area needing help is the User Interface (for both the trading exchanges and the wallets). Another area is helping the payment processors like http://bit-pay.com get written into all of the popular shopping carts.
For non-programmers, the key area needing help is marketing. What is the most effective way to tell people about this great new invention called bitcoin? It's very much like the invention of the internet. It will change people's lives, once they discover it. And they will, one person at a time.
The easiest thing to do is to try and start using it, and tell others about your experience. The more people that know about bitcoin and are out there trying it.... the better off bitcoin will be.