+2  A: 

So, if found a workaround, but not really an answer to my problem.
The trick is to have an invisible node that connections to the starting state. the starting state is then not the top of the hierarchy and one has a little bit more freedom in placing the nodes. Also then the head/tailport attributes work as they should. The result is - if not a pretty as I would like it to be - ok to look at.

digraph finite_state_machine {  
  edge [fontsize=7];
  fontsize = 11;
  rankdir=LR;
  {rank = same;null}
  {rank = same; S0}
  {rank = same; S1 S2}
  nodesep = 1;
  ranksep = 1;

  null [shape = plaintext label=""];
  null -> S0;
  S0 -> S0 [label = "td=1\n-/e2", tailport = n, headport = n]; 
  S0 -> S1 [label = "td=3 \n-/e3" ];
  S1 -> S0 [label = "td=3\n-/-\nt=0"];
  S0 -> S2 [label = "P:i1/e4"];
  S2 -> S0 [label = "td=0\n-/-" ];
  S0 -> S0 [label = "i1/e1\ntd+=1" headport = s tailport = s];
}

a rendering of the state machine

While this works (for this particular example) I would still very much like some advice on dot/Graphwiz or an alternative for rendering finite state machines in a pleasing way.

reforged