The only way I can think of, and it's a bad way at that, is:
Grinding is done while you're offline. I think Eve does something like this. You set the abilities you want to train in, and it's done over a maximum of 8-14 hours. Then you need to log in again, and do things.
The things you do don't have to be based on the skills you want. You just have to play the game-- explore, talk to people, fight things, make things. Everything you do besides stand-still-and-idle earns you points toward a percentage bar. Even talking to people, if you can figure out a way to make that exploit proof.
So say you only hang around on the game a little bit. You earn 35 percent of the bar, then log off. Your training is done for 35 percent of the maximum amount of time. (Say, 12 hours, so 35 percent of 12 hours.)
It's also a healthy way to keep people from playing 24-hours-a-day, by making progress associated with both playing the game, and not playing the game. You'd still grind for this percentage bar, but it'd be by doing fun things. Things you want to do while you're playing a game. It wouldn't matter if you did them better or worse than other people, as long as you were active. Then inactive.
You could make your training occur even while online, if the log-off period seems silly.
Edit: Ideally this makes character power associated with how long you've played the game, but also in a way that lets you pull ahead of other people if you work hard enough. Indeed, if you stop playing for a week, you lose about a week of progress.
For extra fun, make a tiny amount of training occur even if that player has been gone for ages. That way, when they come back to play the game, they have a small bonus to look forward to!