Yes, there is a new sizer that can do what you want in wxPython 2.9+ called WrapSizer. There is an example of its usage in the wxPython demo. You can also read about it at the following:
As for the BitmapButton, I am pretty sure you can pass it a jpg file if you do it properly. You will probably need to do something like this:
img = wx.Image(filepath, wx.BITMAP_TYPE_ANY)
bmp = wx.BitmapFromImage(img)
b = wx.BitmapButton(self, -1, bmp, (20, 20),
(bmp.GetWidth()+10, bmp.GetHeight()+10))