I buy pins from a well-known amusement park. I take the pin off the back and use gorilla glue to stick the magnet in the back. Use a magnet that is just smaller than a dime.
You can use pretty much anything for the top portion of the needleminder (provided it isnt too big/heavy), but neodymium magnets and E6000 or Gorilla Glue are key.