You're reasonably close but there are a couple of problems with your code.

The process is as follows (note that this assumes your data is linear, i.e. no gaps between a row of pixels, so adjust it if it's not):

Set the width, height and bpp for your bitmap appropriately
Set the next-row-of-pixels-to-copy variable to the first source pixel
for every scanline, copy width * (bpp div 8 ) bytes from your source tga to your destination bitmap then increase the offset by width bytes.

Remember that the scanlines for a bitmap are just pointers -- you have to write to the memory at that address, and you have to ensure that you're writing enough info to fill up a row of pixels each time. Something like this (untested but compiles):

[pascal]function TcxTexture.GetBitmap: TBitmap;
var
wScanLine, i: Integer;
Offset: PChar; // next row of pixels to copy from source
begin
Result := TBitmap.Create;
Result.PixelFormat := pf24bit;
Result.Width := Header.Width;
Result.Height := Header.Height;
wScanLine := Header.Width*(Header.BPP div ;

// start with the first pixel of the image
Offset := Header.Data;

for i := 0 to Header.Height-1 Do
begin
// copy over a row worth of pixels at a time
Move(Offset^, PPixelArray(Result.Scanline[ i ])^[0], wScanline);

// move a row of pixels further for next time
Inc(offset, wScanline);
end;
end;[/pascal]

Notice that I'm using Move here -- this will copy n bytes of data from one place to another (in this case, copying over your image data onto the newly created bitmap).

As a side note, it's better style to create and destroy classes (or allocate memory) in the same scope. The above function creates a bitmap, but the caller must free it. This is pretty bad news in terms of exception handling and call lead to jumping through hoops if you want to be safe. I'd recommend passing in a bitmap and having the GetBitmap function thing just using it, without allocating things for itself. This not only clears up the code (it's much easier to track where objects are created and freed) but it gives more intuitive exception handling. E.g.

[pascal]procedure TcxTexture.GetBitmap(UseMe: TBitmap);
var
// vars here
begin
Bmp.PixelFormat := pf24Bit;
Bmp.Width := Header.Width;
//etc
end;

// and later on in your code

procedure TcxTexture.Whatever;
var
Bmp: TBitmap;
begin
Bmp := TBitmap.Create;
try
GetBitmap(Bmp);
// do stuff
finally
Bmp.Free;
end;
end;[/pascal]