All versions of LO in Windows after 6.0.7.3 screw up user-defined toolbar icons in one way or another by producing bad toolbar image files. I haven’t tested newer releases in Linux. The only remedy is to replace these with files produced by 6.0.7.3 or created by hand. The files are located in
{appdata}/LibreOffice/4/user/config/soffice.cfg/modules/{app}/images/Bitmaps
where {appdata} is C:\Users\name\AppData\Roaming in Windows and ~/.config in Linux and {app} is the module, e.g. swriter, in which the toolbar is used.
The large icon toolbar image file is called lc_userimages.png and the small sc_userimages.png. These simply concatenate the icon images, which are 26x26 px for large and 16x16 px for small. Borders are not included. The program dissects this on 26 or 16 px boundaries to display the toolbar. A large icon toolbar image has height 26 px and width 26 px times number of icons, while a small is 16 by 16 x icons. If you are already making your own icons, combining them into a toolbar image is a simple additional step, especially with a powerful image editor like Gimp. I haven’t tried it but imagine that LO Draw can also do this. If using existing icons that are larger than 26x26 or 16x16 you may be able to sequentially overlap them but I haven’t tested this. For smaller icons, it is helpful if the image background is transparent. Gimp can scale images to the required size (something that LO 6.0.7.3 does very well). Hand-crafted images at the proper size will usually be better.
Although you have to produce individually the toolbar image files for different icons sizes, you can save a little effort in LO’s Tools > Customize > Toolbars by creating only one size and copying it with a trivial modification. The large and small toolbar definition files are lc_imagelist.xml and sc_imagelist.xml located in the parent (images) directory of Bitmaps. They differ in only one statement, xlink:href = “Bitmaps/lc_userimages.png” vs. sc_userimages.png.