Use windows API call CreatePolygonRgn to create non-rectangular forms.
There may be a similar function that actually handles round, otherwise you will have to have enough points in RgnPts to make it look round.
I have this as a form viable, not local var. I suspect that is necessary.
RgnPts:array[0..13] of TPoint;
The following going in FormCreate
var
Region: hRgn;
begin
{initialise RgnPts here to give desired shape of the form}
Region := CreatePolygonRgn(RgnPts[0], Length(RgnPts), ALTERNATE);
{ Assign the region to the window }
SetWindowRgn(Handle, Region, True);
Have fun, you can do amazing things with this.
Simon