Ummm... not exactly.
Any process put into the background is reparented to init when the parent process tree terminates - the classic way to do that is using the "nohup" command. This isn't necessary for bash though.
When the parent process tree terminates, the process automatically becomes the task group leader for any processes it starts, and its signal leader is init (pid 1, due to reparenting). No need for a setsid system call.
All that is necessary is to redirect stdin/stdout/stderr, put it in the background and log out (the redirection is needed to disconnect from the controlling terminal - otherwise the process gets an I/O error on these file descriptors).
The definition is: http://en.wikipedia.org/wiki/Daemon_%28computing%29
In a Unix environment, the parent process of a daemon is often, but not always, the
init process. A daemon is usually created by a process forking a child process and
then immediately exiting, thus causing init to adopt the child process. In addition,
a daemon or the operating system typically must perform other operations, such as
dissociating the process from any controlling terminal (tty). Such procedures are
often implemented in various convenience routines such as daemon(3) in Unix.
There is no special field that identifies a daemon. It is just how a process is used.
Trivia side note: The name "daemon" comes from "Dump And Examine MONitor" from pre-UNIX history (TOPS 10, I believe). It was the name for a system service that provided for core dumps of user memory and for debugging the system monitor (now called a "kernel").