Why does my ActiveX control say that it needs to be marked as safe for initializing?

InfoPath custom controls can use a subset of ActiveX controls. This subset must implement IObjectSafety for it to work in InfoPath (you won't even be able to add it if you don't have this).

For those writing Visual Basic 6.0 controls, take a look at this article on how to do it:
https://support.microsoft.com/default.aspx?scid=https://support.microsoft.com:80/support/kb/articles/Q182/5/98.asp&NoWebContent=1