Transparency is one of those CSS properties that has a weird history and requires lots of different properties and values to ensure cross browser compatibility that goes back as far as you can. To cover all your bases, you need a bunch of CSS statements. Fortunately they don't interfere with each other, so using them all every time you wish to add transparency is no big hassle and worry-free. Here they are, and are currently set to 50% transparency:
/* Required for IE 5, 6, 7 */
/* ...or something to trigger hasLayout, like zoom: 1; */
/* Theoretically for IE 8 & 9 (more valid) */
/* ...but not required as filter works too */
/* should come BEFORE filter */
/* This works in IE 8 & 9 too */
/* ... but also 5, 6, 7 */
/* Older than Firefox 0.9 */
/* Safari 1.x (pre WebKit!) */
/* Firefox 0.9+, Safari 2?, Chrome any?
/* Opera 9+, IE 9+ */
Update July 5, 2011. Here's what I'd recommend for usage today, in way easier copy-and-pasteable format.