Get ready. Here comes the sperg.
Increase game pace. Reduce (frustrating) randomness. Players like to reach a goal in the dungeon, either the boss or a treasure chest or other point of interest. This feeling is hindered when when they are interrupted by frequent random encounters especially when the encounters seem repetitive. One method for mitigating this is to use visible (on the map) monsters, but in some cases merely reducing the encounter rate will serve. Excessively long dungeons can also be a culprit, IMO 30 minutes is a good length for a dungeon in straightforward dungeons. Generally, unless the level has an interesting maze, puzzle or minigame mechanic it should probably an hour or less in duration. Contributing to this total dungeon length factor might be delaying monster encounters. It's usually best to avoid monsters that have sleep-all or confuse-all attacks that can remove player control completely.
Have you ever played a FF game all the way through without using a megaelixer? I have. You can't buy them in stores so the amount that exist is absolutely limited. What if I needed it for a harder boss? But an item that no one ever uses is no better than an "Achievement." You want the players to use the items they find. Reduce obsessive behavior. (Of course, part of this is the player's fault) Make sure that the game is balanced to be difficult but beatable 'without' grinding. This also maximizes how interesting random encounters/bosses can be. Reduce the efficiency of grinding by reducing experience gains/increasing curve as grinding continues (but please don't have monsters that gain levels with you, that's BS). Provide a method for the player to determine where or how many treasures are available in a dungeon, or at least ensure that dungeons don't self destruct. In addition, utility items should be purchasable or repeatably obtainable (without encounter farming). A good example of this is the Yggdrasil leaf in Dragon Quest which can be found whenever you have none in your' inventory.
Make penalties obvious but not severe. The main culprit I'm thinking of here is Total Party Death. Some games remove everything gained in between the last save and TPD. This penalizes player's for trying to play your' game as intended and teaches them to grind more instead. In Dragon Quest, however the penalty is reduced to 'lose half your' gold, and get kicked back to your' last save.' Etrian Oddessy also mitigates this penalty by allowing you to save your' map data (which is harder and more time consuming than regaining the lost experience.) Another situation that is important to do this with is correcting poor skill tree choice. The player should be able to reset his skill tree to prevent him from having to restart, but if there is no penalty the player will reset for every new circumstance. Another approach would be to put methods in that prevented poor skill choices, but IMO that's boring.
Increase mechanic transparency. RPG players are smart. They will want to know why their super sword slash does 120% more to that turtle than a fireball. Tell them why. You can tell them all the numbers up front, or at the least provide cues to advantageous actions. If the characters have skill trees provide data for each skill so that the player can make informed decisions. Otherwise they'll feel cheated when the get an ability that does something they didn't want.
Give the player options that are interesting. No one wants to play a fighter that only uses attacks, or a white mage that only uses the basic heal spell each turn. Encourage non-attack/healing options whenever possible. There are a number of ways to do this. Reduce skill cost/increase max MP, or use a non-MP based system. You can encourage the use of status effects by adding regular damage to the attack as well as the chance to cause the status. Tag hitting elemental weaknesses with an additional bonus of some type, or reward certain 'combination' of attacks. You could also make different elements distinct by granting them different targeting options (or adding mini-status effects to them like burn for fire.) Increase the scope/duration of stat buffs and debuffs to make them viable as well (or tack debuffs onto an attack). You can also increase the scope and duration of basic healing spells to make them more interesting. What if the 'basic healing' spell was regeneration? Or whenever you buffed someone they gained HP as well? The resurrection spell could also add a defense buff. Passive abilities that trigger off other actions in battle can also be fun. The berserker can gain an attack bonus for killing enemies or maybe the black mage gets MP back whenever an enemy hits him. Uncontrollable passive abilities (such as the mage's MP gain) are most rewarding when the player still makes a choice to enable them such as choosing them from a skill tree or equipping a talisman that grants them. In addition you can provide complementary abilities to characters that have strong plot relationships, or conflicting ones for characters that are at odds.
Use unique monsters (and other gameplay pieces) to add to the experience. Monsters should be able to pull off some of the cool tricks that the characters can as well, and maybe some that the characters can't. But aside from bosses each monster should have only one or two tricks. This makes the monster feel like it has a unique, recognizable flavor. Try to choose ability sets for monsters that combine in different manners with different sets of monster parties. Grant enemy AI the ability to 'combo' with each other without being overwhelming.
Indie Game Designing Advice:
Your' game design is almost certainly too big for you to complete. Make it smaller. With an RPG, you can make an anthology series using the same system/characters and focus on a different main character with each game.
(You may notice that a lot of these concepts are intertwined.)