Just went through your code. Inside your ISR please call "isr_mrf_int_ClearPending();". Can you debug and elaborate more on the problem? Is the interrupt being generated?
And if the interrupt is being generated, you are calling a function "int_detect ();" which returns the status of a read command. You can check if something is being returned or not.
About good library for MRF24J40, I don't think we have any. But I checked the initialization code etc. and it looks fine to me.