It took only 20 years to get to this point so who knows ? Perhaps it will be implemented in another 2 weeks ? 
Many fields in FPC/Lazarus have only a single contributor or less,
so decades of non-work don't say much about the difficulty yet.
The implementation of TBitmap.PixelFormat is just unfinished.
But indeed, there is no quick solution here, but it's possible with many incremental improvements under the umbrella of the current design.
In SetPixelFormat(): Before converting to a new PixelFormat, the function needs to query if the destination format is possible. And only then convert (between TRawImage objects).
The first enhancement (prerequisite) would be that widgetsets support more formats in:
function TWidgetSet.rawImage_queryDescription(): boolean;
AFAIK, all widgetsets could be extended to allow (1,4,8,16,24,32) for TRawImage.
The first step would implement the most popular formats (nonpalette: 24, 32).
Finally, also TRawImageQueryFlag would need to be extended by a few bitness values (default is used if bitness is unrequested or unsupported).
As parttime WinApp developer I have no time/need/testsystems for this, but a more complete TBitmap would be useful for many.