hu, I never call getTreeCellRendererComponent(). that is done by the tree. I rather write my own TreeCellRenderer:
whenever the image should switch to greyish you must assure that the method getTreeCellRendererComponent gets called, that means that the cells are rendered again. this is the case when the JTree gets revalidated for example. through the object value
you should be able to determine which object is currently dragged (add some method of kind isDragged() to your subtype of TreeNode).
hope that helps!
chantal