What is the best way to hang a heavy picture on a wall with no stud behind it?

If the wall is made of drywall/sheetrock/gypsum wallboard, use one or more screw anchors. This is a plastic cone that comes with a screw. You drill a hole, push in the plastic cone, and use a screw driver to thread the screw into the anchor. Typically the instructions are on the package of screw anchors. Larger anchors will hold more weight, but the size of screw anchor you can use is limited by the thickness of the drywall, so the thickness of the drywall limits the weight it will support. It might be possible to use multiple anchors, but that might require some calculation and planning. If the wall is not drywall but plaster and lathe, you can use a lag bolt. This is a long threaded rod with a spring-loaded folding wing-like thing that threads on the end. To use it you drill a hole large enough to accommodate the folded wing. Push it through the hole, and the wings expand and grip the inside of the wall. Turn the screw to pull it up tight. For a brick or stone wall, there are special masonry drill bits to drill a hole, and anchors of plastic or metal that go in the hole. These expand to grip the wall when a matching screw is driven in. If the wall is not too thick, you could use a lag bolt like above. For a wood wall, simple wood screws should work. For smooth tile or glass, consider any epoxy adhesive.