The method 1 and method 2 are the most appropriate ones.
If you validate the form using a $_GET['submitted'] == true
this could easily be cracked by the end user which creates a security breach.
The best method i think is the first one
if($_SERVER['REQUEST_METHOD'] == 'POST')
This piece of code works good even on dynamically generated forms wherein you do not have to check a post variable.