It certainly seems to be a valid Abstract Factory Pattern -- you're making sure that only certain brands of parts go with certain brands of cars.
However, I have to take some umbrage with your class design.
- You have a CarFactory that doesn't actually produce a car?
- But you have a car client that does?
- Also, interfaces should be for classes that are functionally divergent in behavior across implementations.
Wheels/Doors are functionally no different from one car to another. The same exact wheel/tire can and is used across dozens of car model lines. Wheels have properties but are functionally identical. BMW can't claim exclusivity on 17 inch wheels.
So, good job on your abstract factory implementation :) But keep working on your object design.
For a great example of the Abstract Factory Pattern have a look at how Java does it's UI Toolkit and changes UI themes in it's non-existent world of desktop apps