I didn't touch that piece code for very long, but look how I do it:

Code:
  {$ifdef win32}
    {$r chentrah.res} //the application icon
  {$endif} 

.........

  with wndClass do
  begin
    style         := CS_HREDRAW or    // Перерисовывать окно целиком при изменении ширины
                     CS_VREDRAW or    // ...то же, для высоты
                     CS_OWNDC;        // Окну нужен собственный контекст устройства
    lpfnWndProc   := @WndProc;        // Оконная процедура, которая будет ловить мессаги
   {$ifdef fpc}
    hInstance     := System.HInstance;
   {$else}
    hInstance     := SysInit.HInstance;
   {$endif}
    lpszClassName := PChar(s);
    hIcon:=LoadIcon({$ifdef fpc}System.HInstance{$else}SysInit.Hinstance{$endif}, PChar('ICON_0'));
  end;
-- and then this class used to create the application window.

The *.res file was created using some third-party tool (the one included with FPC didn't work) from an .ico drawn in GIMP (which is able to save multi-layer images as multi-variant icons)