David,
A non-modal form does not pause for code to continue. If you ahve two "always-on-top" fomrs the one with focus will be on top. The non-modal form is not holding focus and therefore the main form regains focus and it comes to the top.
The trick I use to do an operation with a message form like this is to place a textbox in the non-modal form at tab position 1. In the Gotfocus of that textbox I put the code to run the operation and end that code with a Thisform.Release(). Then when I want the operation I simply DO FORM MyForm and let it go.