I focus on wrapping up globals to a degree (like for main objects) during development but will still have many loose globals just through the course of development. Every few dev sessions I focus on clean-up and refactoring code in general which includes wrapping up globals. And then I do it again at the end.
This approach lets me focus on getting things done to make progress rapidly while still having a somewhat solid codebase. And through the occasional code clean-ups along the way and at the end that gets its own focus. I find it works well because I rarely take the time to design out anything these days like I used to years ago. So things evolve and improve over time. By delaying focus on code structure... when I do focus on that aspect I am dealing with more stable final versions which is a benefit saving overhead time.
Really if the globals are organized with types or even naming conventions that is the important thing I think. I mean we have to remember what the purpose of focusing on such things is. Basically we want to make the code clear, bug free, easily maintained and ideally no more complex than it needs to be (i.e. simple code is generally "better" code easier to understand easier to enhance and easier to debug).
I'd say a good rule of thumb is if you notice the use of globals becoming a problem.... "Where did I define that? Which variable tells me...?", etc then it is time to focus on structure and organizing your use of globals so development becomes easier and faster.
TI/994a (BASIC) -> C64 (BASIC/PASCAL/ASM/Others) -> Amiga (AMOS/BLITZ/ASM/C/Gamesmith) -> DOS (C/C++/Allegro) -> Windows (C++/C#/Monkey X/GL Basic/Unity/Others)