It *may* be possible to have your mapping set up an InsertLeave autocmd which would then fire to complete the desired actions, and delete itself.
Does it have to be in one mapping? Why not something like
nmap _i :Do_stuff<cr>i
imap _i <Esc>:Finish_off<cr>
The only difference would be that you press _i a second time, instead of the <Esc> key.