Introduce the player to about one or two different obstacles not seen throughout the obby. Then, use these obstacles, and other previously used obstacles in complex ways, in order to make the obby harder and fresh.
To make it enjoyable, all you have to do is give the player a smooth and fair experience. To treat the player fairly, correctly guide the player. For example, if there was a stage with two ways to complete, an easy way, and a hard way, tell the player that there are two ways to get past the stage, and they can choose where they want to go.
It’s all about achievement and effect. Have the player feel accomplished, maybe by telling them “Wow, that was a hard stage, but you beat it! Nice skills!”. That makes the player feel good, because they persisted through a toughie. As for effect, do something cool when a player clears the stage, like make some particles shoot through the checkpoint, and make it nice. That makes the player want to get to the next checkpoint, to see that coolio effect again.