I am at the point where I understand basic design patterns and MVC pretty well. I understand them in theory, but when it comes down to actually building a real world, simple, well designed MVC framework in PHP, i'm stuck.
I think I know why you're stuck. You're stuck because MVC as it was originally conceived about twenty years ago doesn't actually work on the web. Every MVC web framework you've come across is actually a kludge, a hack. They are MVC frameworks because that's the name that people have chosen to use, but it's definitely not MVC.
You don't need an MVC framework for the web, and trying to find one will make you feel like you are trying to fit a square peg into a round hole. What you really need is to look at a very simple request-response handling framework.
The simplest one I know that is worth studying is not written in PHP, but in Python. It's called Albatross. It actually does a lot more than request-response handling, because it includes a template engine as well. But the session handling stuff is well done and that's what's important.
The problem that you will need to overcome on the web is the stateless nature of HTTP. MVC by definition requires state to be passed between the views and the models cleanly and quickly, which is why the two don't mix well. MVC is a compound design pattern that was defined and understood to apply to objects sharing the same memory space. If you can't use the observer pattern to link up your models and views, you aren't doing MVC! It can't be mapped on to the web easily.
If you want to keep up the MVC paradigm on the web, you will need to define for yourself what a view is and what a controller is. Most popular web frameworks have completely bastardised the notion of a view, it's basically a "page" or some nonsense. Traditionally a view would be quite a smaller component of what you see, for example a single text box or a single table. So, in the web world, you're better off thinking of DOM elements as views.
For the controller, best bet is to use JavaScript to implement your controllers. Build your models using the RESTful principles of the HTTP protocol. So your URIs are paths to model objects and the HTTP methods of GET, PUT, DELETE, and POST become operations done on those objects
Is it much harder than the way current web frameworks work? Yeah, because you can't crib code and ideas from popular code. But web frameworks are good for blogs and photo galleries.
If you need to build an enterprise application with conventional web frameworks or even with conventional paradigms and your own framework with hundreds or even thousands of model objects with a large persistence layer and hundreds of templates, permission controls, user roles, reporting, importing and exporting of data, scalability, databases full of hundreds of gigabytes of user data, etc you will quickly go insane.
I know this because that's the kind of app I work on every day, and I am slowly going insane.