La única forma de resolver esto (al menos con las capacidades limitadas de MySQL) para permitir NULL
valores en ambas columnas FK. La creación de un nuevo usuario con una identidad principal se vería así:
insert into users (id, primary_identity)
values (1, null);
insert into identities (id, name, belongs_to)
values (1, 'foobar', 1);
update users
set primary_identity = 1
where id = 1;
commit;
El único inconveniente de esta solución es que no puede forzar que un usuario tenga una identidad principal (porque la columna debe ser anulable).