Without knowing the full use case for this question, I would say the answer is "Yes, but cross browser compatibility will be a nuisance."
The two other answers posted here show ways it might be accomplished if compatibility is not an issue, but I think this is something that can be done much more simply by some creative photoshop and then layered elements.
What I would do:
Photoshop:
Take your base image (which I am assuming is PNG since it has an alpha channel) and load it into photoshop. Select the area you wish to mask. edit > copy merged. Make a new layer and edit > paste. Alter the color of this new layer to be the color you want the masked overlay to be and add your alpha channel effect. Make sure the default background is turned off and then save the new layer as a PNG.
HTML:
<div class="container">
<div class="original-image"></div>
<div class="mask"></div>
</div>
CSS:
.container {
height: 300px;
width: 300px;
position: relative;
}
.original-image {
height: 300px;
width: 300px;
background : url(../images/myimage.png) no-repeat top center;
}
.mask {
height: 300px;
width: 300px;
position: absolute;
left: 0;
top: 0;
z-index: 1; //or more depending on what else is going on in the layout
background : url(../images/mask.png) no-repeat top center;
}
It's important in this example for the container to have the same dimensions as the image and mask so that the absolute positioning aligns the mask over your image properly. Making the images into backgrounds allows you to fill the divs with content like type. The main advantage to doing it this way, rather than with the CSS suggested elsewhere here, is that this should work on almost every browser.