Utilisez des backticks autour du nom de la table, pas des guillemets. Et échappez à l'entrée ! De plus, pendant que cela fonctionne sur localhost, assurez-vous que l'utilisateur qui s'exécute sur votre serveur de production dispose du privilège pour CRÉER des tables (ce n'est généralement pas le cas, autant que je sache, sur les hébergements mutualisés bien sûr).
Un mot d'avertissement : êtes-vous vraiment sûr de vouloir créer une table sur une entrée utilisateur ? ? combien de tables allez-vous créer de cette manière ? Ne pouvez-vous pas simplement reconcevoir l'ensemble afin d'insérer des valeurs à la place ?
$name = mysql_real_escape_string($_POST['name']);
mysql_query("CREATE TABLE `".$name."` ( name VARCHAR(30), age INT, car VARCHAR(30))");