Вот сейчас не поручусь за 100% верность, но при старте выполняется метод Show() для первой форме.
Что там "под капотом" - не знаю, но у тебя код в Form_Load, который сам по себе форму не отображает. А поскольку она при старте приложения всё-таки показывается, то изменение видимости формы происходит уже после того, как отработает Load.
Порядок событий такой:
HandleCreated
BindingContextChanged
Load
Control.VisibleChanged
Activated
Shown
Попробуй перенести код в Shown. Думаю, в твоём случае, это поможет.
А вообще, по уму надо бы из Main показывать сначала Form2 , а уж потом Form1 по результату.