Yes, it's a well-known IE6 bug that alpha channels don't work. As per the KB article, you have to sniff for IE6 and replace the image with an element using an AlphaImageLoader
filter.
The simplest, CSS-only way to do that would be something like:
<div id="wrapper">
<div id="im1"></div>
<div id="im2"></div>
</div>
#wrapper { position: relative; }
#im1, #im2 { position: absolute; }
#wrapper, #im1, #im2 { width: 150px; height: 300px; }
#im1 { background-image: url(im1.png); }
#im2 { background-image: url(im2.png); }
/* IE6 opacity hack */
* html #im1 { background-image: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='im1.png'); }
* html #im2 { background-image: none; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='im2.png'); }
(This uses the old-school * html
CSS hack to target IE6; you might also do it in a separate stylesheet targeted at IE6 using a conditional comment instead, if you want to keep your main stylesheet clean of IE-cruft.)
There are also dozens of JavaScript fix scripts that will do the work automatically for you, replacing on-page images with IE filters when JS is enabled. There are lightweight ones that only replace simple images, and complex ones that attempt to reproduce PNG background tiling and positioning effects, with varying levels of success.
Wiki's PNG page has links to many of them.