Hm, this is a good question. I suppose I'll take the Ninja Caterpie approach and individually discuss each category:
Scripting:
Well, for people who are new to hacking, this can be the hardest thing. I know it was for me. And yes, it is also true that it's not too hard once you learn how to go about doing it. But at the same time, it's not just memorizing the commands. It requires intimate knowledge of exactly what each command does and how it works in relation to using other commands around it. For me, scripting is one of the hardest parts of hacking simply because of my perfectionism. I'll spend hours in front of an XSE window and only create something that you can play through in a minute or two. However, what a lot of people miss are the parts of the script that don't have any visual or audible effect. There is always a lot of coordinating of variables (not so much flags) that can greatly alter the course of a script but of which the player has no knowledge. So for me, scripting is probably the hardest, second only to...
Spriting:
Now this, this is difficult. Spriting is art, and for that reason, it's kind of hit and miss for some people. Scripting, once you memorize the commands and grasp the concept of exactly how to use them, isn't too difficult (it's the process of debugging and editing them that takes the most time & effort). But spriting actually requires some talent. I, having absolutely no artistic ability, struggle with spriting in particular. Although for some people, it just comes naturally and they think it's the easiest thing ever. So I suppose this one varies from person to person but for me, this is definitely the most difficult aspect of hacking.
Beta Testing:
As several people have already mentioned, this can be difficult if you do it correctly. Still, the concept behind it is simple: step on every tile, try every script, hit every wall, try every single damn possibility even when you know it's going to work because for God knows what reason it might not work this time. The idea is simple but the execution is tedious and monotonous, to the point where so-called "beta-testers" aren't really testing anything; they're just playing through the game ahead of every one else (as Disturbed so accurately put it). Although, a lot of the time, the hack gets canceled before a release is even at the stage where testing is performed. Still, beta testing is easy in nature but difficult to do (if you do it right).
Mapping:
Mm, my favorite. To me, mapping comes naturally. However, that's not to say that it's easy. The process of mapping usually takes weeks or even months (depending on how active I am) to complete. The process of finding the perfect underlying concept behind a map and taking all of the necessary steps to achieve that takes far too long in my opinion. Mapping, for me, is not too hard but, similar to other tasks, it takes me a good deal of time due to my refusal to accept anything that doesn't look exactly like I want it to. Finding the perfect balance between a playable and an aesthetically appealing map is key. Without it, you're just another face in the crowd.
Hacking, on the whole, is actually a lot more difficult than newcomers initially believe. It takes time to craft a bug-free script, to draw an attractive tile or sprite, to make a map that is an overall enjoyable experience, and to find each and every flaw in someone's (or your own) work. However, something that has been bugging me is the hype over the "skill" that is tile inserting. For me, tile inserting is, hands down, the easiest task in the process creating a ROM hack. And with AdvanceMap, it's ridiculously easy. Truly ridiculous. To think that people have to hire a person on their team for the sole purpose of inserting tiles is ludicrous. All you do is export the tileset in AdvanceMap, change something in Paint, and then import the tileset back into AdvanceMap. Sure, you have to make sure all the colors match the palette and check the alignment but in the scheme of things, you shouldn't dedicate your career as a hacker towards the single task of tile inserting. Take the time to develop your mapping skills or scripting, for which there is a very high demand these days.
So yeah, that's basically it.