If you couldn't cast something to something else then you would crash with a ClassCastException.
I think you need to send a packet to the client notifying them that they can fly now.
Actually, scratch that, your code will never work
if(w.isRemote)
{
PlayerFlight.setFlight(p, true, sender.getEntityWorld());
}
Commands are executed on the server so this condition will always be false thus your flying code will never execute.
Also
IHasModel is stupid. All items need models, no exceptions, and IHasModel makes you write redundand code a lot(as in you need 3 lines PER ITEM as a bare minimum instead of ONE line and that's it). Register your models directly in the ModelRegistryEvent.