I know about MDT, WDS

The way I do it is I create a super generalized image via NTLite and powershell scripts and I deploy it on the system. I do have to create a user account manually in the middle of the process, tho, and wait for the scripts to run post-install upon first logon

Can it be more automated than this? How do companies do it?