решение найдено - но не совсем то что хотелось бы:
C++ (Qt)
void testMask::paintMasked( QPainter* p )
{
  if( p )
  {
    p->fillRect( rect(), Qt::transparent );
 
    p->setCompositionMode(QPainter::CompositionMode_Source);
 
    p->drawPixmap( QPointF(), m_mask );
 
    p->setCompositionMode(QPainter::CompositionMode_SourceIn);
 
    p->drawPixmap(0,0,m_image);
  }
}
если сначала отрисовать всё в QPixmap а затем вывести на виджет в paintEvent то всё ок:
C++ (Qt)
void testMask::paintEvent( QPaintEvent* pE )//v1
{
  QDialog::paintEvent( pE );
 
//   QPainter p( this );
//   paintMasked( &p );
 
  QPixmap px( size() );
  px.fill( Qt::transparent );
 
  QPainter p( &px );
 
  paintMasked( &p );
  p.end();
 
  p.begin( this );
  p.drawPixmap( QPoint(), px );
  p.end();
}
[скриншот - 
http://www35.zippyshare.com/v/78683668/file.html]
а вот когда рисуешь непосредственно на виджете, то получаем чёрную область на месте предполагаемой прозрачности:
C++ (Qt)
void testMask::paintEvent( QPaintEvent* pE )//v2
{
  QDialog::paintEvent( pE );
 
  QPainter p( this );
  //p.setBackground( Qt::transparent );
  paintMasked( &p );
 
//   QPixmap px( size() );
//   px.fill( Qt::transparent );
// 
//   QPainter p( &px );
//   
//   paintMasked( &p );
//   p.end();
//   
//   p.begin( this );
//   p.drawPixmap( QPoint(), px );
//   p.end();
}
[скриншот - 
http://www35.zippyshare.com/v/32651042/file.html]
аналогичную чёрную область можно получить и при отрисовке в темповый pixmap (v1), если выставить виджету аттрибут:
C++ (Qt)
setAttribute( Qt::WA_NoSystemBackground );
похожая проблема описана вот здесь: 
http://www.qtcentre.org/threads/43614-transparency-problem.-pls-help.
там челу посоветовали юзать темповый pixmap, данный вариант не подходит мне по производительности и использованию памяти, может есть какая-то возможность настроить QPainter так что-бы при отрисовке на виджете результат был аналогичен тому что и при отрисовке в QPixmap (хотя по логике вещей он и должен быть таковым)?