There are still numerous bugs in Pokemon server, and one of them includes this type of them.
Problem is usually that your server is dropping data and/or packets between the client and host.
Most games and programs that transfer data have advanced data exchange handlers.
However, in this event, it's still "novice" programmed.
To simplify, your client is sending one signal, but the server misunderstands it.
So, when CLIENT is responsible for causing collisions (that is, preventing you from walking OVER objects),
if the SERVER didn't get the signal, let's say, that you stopped moving left, it makes funny things happen.
Let's say you pressed left 5x, but there was an object (gate) only 4 blocks away.
The client could stop you from moving after 2 blocks.
But if you pressed left 5x before the client sends the signal "Can't go there",
the server already put you PAST the collision object.
I don't know much specifically about PokeMMO's source, but I can honestly say it's likely this problem.
Three Fixes are possible, in that case:
1) Fix anything up causing internet problems. Are your running it from localhost?
If you are, your CPU may be running too slow.
2) If you know the source coding enough to reprogram the collision system and sending packets.
3) Close anything that may be taking up your bandwidth and/or CPU on both, the server and client machines.
I'm going to possible start trying pokemmo soon. I've run PokeNet for 10 days, buy the Evolution Stones don't work, and my Venusaur bugged (can't level past lvl32). MarkZ88's only set with a working link doesn't seem to allow you to leave town...
So this seems to be the only chance of something I can work on.
I don't know much Java (I'm more into hardware, web design, networking, and robotics), but if I reprogram anything, I'll likely post it.