Después de hacer TPlus esto ha sido coser y cantar. Aunque la validación es algo diferente, con este trozo de código se puede obtener la cookie (cookiefb) que nos permite interactuar con Facebook.

Una vez tenemos la cookie sólo hay que usarla en cada llamada (GET o POST) y podremos naegar sin problemas.
private void ConectarConFacebook()
{
String miUser = "mail@dominio.com";
String miPass = "casimiro";

// Obtenemos la cookie inicial al entrar en la página de validación de usuario
 String cookie = CargarHome();

 // Extraemos la clave 'lsd' de la cookie
 String lsd = ExtraerCookie(cookie, "lsd");

 // Con la cookie anterior validamos y obtenemos la nueva cookie
 cookie = Conectar(miUser, miPass, cookie);

 if (cookie == null)
    // ERROR AL CONECTAR
 else
 {
 // Extraemos los datos necesario para crear la cookie que necesitamos para navegar
 String c_user = ExtraerCookie(cookie, "c_user");

 if (c_user == null)
    // ERROR AL CONECTAR

 String datr = ExtraerCookie(cookie, "datr");
 String lxe = ExtraerCookie(cookie, "lxe");
 String lxs = ExtraerCookie(cookie, "lxs");
 String xs = ExtraerCookie(cookie, "xs");
 String lo = ExtraerCookie(cookie, "lo");
 String sct = ExtraerCookie(cookie, "sct");

 usergp = c_user;

 // Creamos la nueva cookie
 cookiefb = "lsd=" + lsd + ";";
 cookiefb += "c_user=" + c_user + ";";
 cookiefb += "datr=" + datr + ";";
 cookiefb += "lxe=" + lxe + ";";
 cookiefb += "lxs=" + lxs + ";";
 cookiefb += "xs=" + xs + ";";
 cookiefb += "lo=" + lo + ";";
 cookiefb += "sct=" + sct + ";";
}

Función CargarHome:

private string Home()
 {
 HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.facebook.com/");
 req.Method = "GET";
 req.UserAgent = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1";
 req.ContentType = "application/x-www-form-urlencoded";

 try
 {
 HttpWebResponse response = (HttpWebResponse)req.GetResponse();
 return response.GetResponseHeader("Set-Cookie");
 }
 catch
 {
 return null;
 }
 }

Función Conectar:

private string Conectar(String user, String pass, String cookie)
 {
 System.Net.ServicePointManager.Expect100Continue = false;
 Uri address = new Uri("https://login.facebook.com/login.php?login_attempt=1");
 HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(address);
 req.AllowAutoRedirect = false;

 req.ProtocolVersion = HttpVersion.Version11;
 req.Method = "POST";
 req.UserAgent = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1";
 req.ContentType = "application/x-www-form-urlencoded";
 req.Headers.Add("Cookie", cookie);

 byte[] byteData = UTF8Encoding.UTF8.GetBytes("locale=es_ES&email=" + user + "&pass=" + pass);
 req.ContentLength = byteData.Length;

 try
 {
 Stream postStream = req.GetRequestStream();
 postStream.Write(byteData, 0, byteData.Length);
 postStream.Close();
 }
 catch { }   

 try
 {
 HttpWebResponse response = (HttpWebResponse)req.GetResponse();
 cookie = response.GetResponseHeader("Set-Cookie");

 return cookie;
 }
 catch { }

 return null;
 }

Función ExtraerCookie:

private string ExtraerCookie(String cookie, String clave)
 {
 clave += "=";
 string[] datos1 = cookie.Split(';');

 foreach (string dato1 in datos1)
 {
 string[] datos2 = dato1.Split(',');

 foreach (string dato2 in datos2)
 {
 if (dato2.StartsWith(clave))
 return dato2.Replace(clave, "");
 }
 }

 return null;
 }