Irfan View can do that. It can convert any format that it can open, and it can open a lot of them, to ico.
But whatever program you use make sure to resize your png or whatever to desired size. Ico is uncompressed format, and if you just convert full size image it will have probably several megabytes in size.
First resize original image to 32x32, or whatever you want, Irfan View can also resample image, which should give more quality output, although it is not very important when you are downsizing, and then convert to ico.