I Think Joel is Wrong on this One
I tend to agree with Joel, of Joel on Software fame, but today there's something he's saying that just isn't right. His point is that you should not hide or disable menu items because there's no feedback to the user why they can't use these, if they can see them in the case of disabling, or not see how to do something in the case of hiding.
While I can understand his logic, I have to say that I think he's taking an extreme point of view to try and make the point. His point is that your application should be easy for all to understand. And to that, I agree. However, it might be a lot easier to understand if the menu items were grayed out if the actions we're allowed. As Daniel J. points out in this rant, there's a lot of ways to indicate why without having the user try something and then be greeted with a message box saying "Hey, no can do".
It's a question of usability and your users. On a Mac, the average user is going to expect that applications behave a certain way - including having disabled menu items. On this platform, if you don't disable a menu item that is illegal in a certain context, the users will think it odd, and say it's a bug. And it is. For this platform. On some other platform, maybe not. But I think it's going to be tough to really make hard and fast rules like this without looking at the environment and the expected users.