Suppose somebody develops a new language, with totally new characters. And a font for the same has to be created. How does one do that?
Creating a customized language font is not at all different from creating a standard font, as long as a standard keyboard can be used to write it:
Ad DA01 mentions, you can start by drawing your font and digitizing it using a tablet or re-drawing your curves with a scanner and software of your choice. Then you can use a program to convert your characters into a font.
ILoveTypography has a nice article on this: http://ilovetypography.com/2007/10/22/so-you-want-to-create-a-font-part-1/ There you can find a list of alternatives, methods and suggestions (there is also a part 2).
If your font has nothing to do with the current alphabets, then you will have to either create a new input hardware / software or use your language in a different way.
The first thing, you need to know about are Unicode’s Private Use Areas (PUA). They provide code points whose usage is left at the discretion of the font creator. For example, it can be used to provide deco elements, provide fallback ways to access characters that are otherwise only accessible by OpenType features and similar or encode characters for existing languages that haven’t been encoded yet. In particular, it can also be used for characters for totally new languages (or more precisely scripts) until they become included in Unicode – which will likely take a while.
So the first thing you should do, is to develop some convention for the users of your language on which characters from the PUA should be used for which characters of your script. If your script has features such as diacritics or ligatures, you might read into Unicode’s current policies and adopt them¹. Unless your script has more characters than the first PUA (in the Basic Multilingual Plane), I recommend using it, as this ensures maximum software compatibility.
Creating a font for your script works like creating a font for existing script just that you create characters for the selected PUA code points instead of the code points reserved for existing scripts. And the best thing is: If you create other fonts for your script, you can easily switch a text between them and users of your language who want to render texts only need one font supporting it.
This leaves the problem of implementing a keyboard layout or other input methods for your script, but that’s a problem you would probably face anyway and that’s not so big an issue nowadays. The only way to avoid this is reusing code points for Latin (or whatever the standard script among the speakers of your language is), but I strongly advice against this, as it will create more problems than it solves on the long term.
¹ Which in case of the examples means: Use modifier characters instead of one character for each diacritical character and do not encode ligatures – let intelligent font features handle them.
Here's an article on a Klingon font (an artificial language) which covers this. http://www.klingonwiki.net/En/Fonts
Keeping in mind the actual design of the new language characters is trivial. It's just like a dingbats font. You design arbitrary characters and assign them to existing keyboard characters (unicode). Something like FontForge can help design the letters and create a font file out of them. http://fontforge.github.io/en-US/
As other people have pointed out, actually using the language appropriately is a whole other issue.