A simple vista, si el valor de x1=x2 y y1=y2 steps seria igual a cero, lo que origina una division por cero (supongo que ese es el error). Supongo que con una comprobacion antes de hacer la division seria suficiente.
Código Delphi
[-]
procedure line(x1,y1,x2,y2:integer);
Var
dx,dy,steps,i:integer;
xIncrement,yIncrement,x,y:real;
Begin
dx:=x2-x1;
dy:=y2-y1;
if abs (dx) > abs (dy) then
steps:=abs(dx)
else
steps:=abs(dy);
x:=x1;
y:=y1;
form1.PaintBox1.Canvas.Pixels[round(x), round(y)]:=4;
if steps = 0 then Exit;
xIncrement:= dx/steps;
yIncrement:= dy/steps;
for i:=1 to steps do
begin
x:=x+xIncrement;
y:=y+yIncrement;
form1.PaintBox1.Canvas.Pixels[round(x), round(y)]:=4;
end;
End;