The biggest reason you don't want to dynamically create controls is that you have limits on the sizes of modules and limits on the number of modules and limits on the space that modules take up. If you are creating a form in a DB from code running in the same DB, you have code taking up space that should be used for solving your primary problem, not for building more objects in the user interface.
The more common approach is that you create your forms manually and if there is something you don't want to see or DO want to see, you control their visibility and position programmatically, you don't create or delete them. If you want specific permanent placement, you move things where you want them manually and then save them that way. Doing that, you have no ambiguity about where things will go.
Having said that, there is no particular barrier to creating your own wizard other than that using VBA, you are using an interpretive language rather than a compiled language and it won't be fast to do what you want. Oh, not terribly slow - but not as fast as a truly compiled wizard such as the ones supplied with Access.