If I were to post something, innocently, on the wrong site and became aware through my own observation or from the comments of others that another site was more appropriate for the question, am I able to migrate it myself or is that function only available to mods?
At present, the migration function is based off of the close mechanism, so either 5 people have to close it as "belongs on X" or a moderator has to do it. If you notice that you posted on the wrong site, just delete your question and post on the correct site, no harm done. However, if you already have some answers that you want to save, you can try and get it moved to the right site by editing your tags to say "belongs-on-X" and/or put a message at the top of the post requesting that it be moved.
Until users can flag their own posts, these are really the only tools that they can use to try and get some attention from moderators or users with the ability to close to move the post.
As a side note, if you see a post (not your own) that you think belongs on a different site, you can just flag it for moderator review, and, if you have closing power, close as "belongs on X".
The function is only available to mods. Ideally you could flag your own question for moderator's attention, but I believe right now you cannot. The best you could do is post a comment indicating you believe it should be moved and asking others to help you out. Here is the feature request to be able to flag your own post.
It's only available to moderators and those with over 3000 rep (who can vote to close).
If you see a post that you think should be migrated, flag it as Requires Moderator attention and explain why.
If you can't flag your own post (see comments) then post a question here.